package net.robinx.blur;
import android.graphics.Color;
import android.support.v4.view.ViewCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.ViewTreeObserver;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import net.robinx.lib.blur.utils.BlurUtils;
import net.robinx.lib.blur.widget.BlurDrawable;
import net.robinx.lib.blur.widget.BlurMaskRelativeLayout;
import net.robinx.lib.blur.widget.BlurMode;
public class BlurDrawableActivity extends AppCompatActivity {
private ScrollView mScrollView;
private RelativeLayout mBlurDrawableRelativeLayout;
private BlurMaskRelativeLayout mBlurMaskRelativeLayout;
private ViewTreeObserver.OnScrollChangedListener mOnScrollChangedListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_blur_drawable);
init();
}
private void init() {
mBlurDrawableRelativeLayout = (RelativeLayout) this.findViewById(R.id.blur_drawable_container);
mBlurDrawableRelativeLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mBlurDrawableRelativeLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
BlurDrawable blurDrawable = new BlurDrawable(BlurDrawableActivity.this);
blurDrawable.setDrawOffset(mBlurDrawableRelativeLayout.getLeft(), mBlurDrawableRelativeLayout.getTop() + BlurUtils.getStatusBarHeight(BlurDrawableActivity.this));
blurDrawable.setCornerRadius(10);
blurDrawable.setBlurRadius(10);
blurDrawable.setOverlayColor(Color.parseColor("#64ffffff"));
mBlurDrawableRelativeLayout.setBackgroundDrawable(blurDrawable);
}
});
mBlurMaskRelativeLayout = (BlurMaskRelativeLayout) this.findViewById(R.id.blur_mask_container);
mBlurMaskRelativeLayout.blurMode(BlurMode.RENDER_SCRIPT)
.blurRadius(4);
mScrollView = (ScrollView) this.findViewById(R.id.sv);
mScrollView.getViewTreeObserver().addOnScrollChangedListener(getOnScrollChangedListener());
}
public ViewTreeObserver.OnScrollChangedListener getOnScrollChangedListener() {
if (mOnScrollChangedListener == null) {
mOnScrollChangedListener = new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
//BlurDrawable
ViewCompat.postInvalidateOnAnimation(mBlurDrawableRelativeLayout);
//BlurMaskRelativeLayout
int scrollY = mScrollView.getScrollY();
Log.i("robin","scrollY:"+scrollY);
float alpha = (float) scrollY/1000;
if (alpha > 1f) {
alpha = 1f;
}
Log.i("robin","alpha:"+alpha);
mBlurMaskRelativeLayout.setAlpha(1f-(alpha));
}
};
}
return mOnScrollChangedListener;
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mOnScrollChangedListener != null) {
mScrollView.getViewTreeObserver().removeOnScrollChangedListener(mOnScrollChangedListener);
mOnScrollChangedListener = null;
}
}
}