package com.beanu.arad.support.slideback.widget;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.Shader;
import android.support.annotation.FloatRange;
import android.view.View;
/**
* Created by Oubowu on 2016/9/20 0020 11:22.
*/
public class ShadowView extends View {
private LinearGradient mLinearGradient;
private Paint mPaint;
private RectF mRectF;
private float mAlphaPercent = -1;
public ShadowView(Context context) {
super(context);
mPaint = new Paint();
}
@Override
protected void onDraw(Canvas canvas) {
if (mAlphaPercent >= 0) {
// 绘制渐变阴影
if (mLinearGradient == null) {
mRectF = new RectF();
int[] colors = {Color.parseColor("#0A000000"), Color.parseColor("#66000000"), Color.parseColor("#aa000000")};
// 我设置着色器开始的位置为(0,0),结束位置为(getWidth(), 0)表示我的着色器要给整个View在水平方向上渲染
mLinearGradient = new LinearGradient(0, 0, getWidth(), 0, colors, null, Shader.TileMode.REPEAT);
mPaint.setShader(mLinearGradient);
mRectF.set(0, 0, getWidth(), getHeight());
}
mPaint.setAlpha((int) (mAlphaPercent * 255));
canvas.drawRect(mRectF, mPaint);
}
}
public void redraw(@FloatRange(from = 0.0,
to = 1.0) float alphaPercent) {
mAlphaPercent = alphaPercent;
invalidate();
}
@Override
protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mLinearGradient = null;
}
}