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;
        }

    }
}