package com.example.tidydemo; import com.nineoldandroids.view.ViewHelper; import android.os.Bundle; import android.app.Activity; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.support.v4.widget.DrawerLayout; import android.support.v4.widget.DrawerLayout.DrawerListener; import android.util.TypedValue; import android.view.Menu; import android.view.View; public class MainActivity extends Activity { private View overlayLayout; private Drawable overlayBackground; private DrawerLayout drawLayout; private Bitmap scaled; private View contentFrame; private View menuFrame; private DrawerListener drawerListner = new DrawerListener() { @Override public void onDrawerStateChanged(int newState) { } @Override public void onDrawerSlide(View drawerView, float slideOffset) { if (slideOffset > 0.0f) { setBlurAlpha(slideOffset); } else { clearBlurImage(); } } @Override public void onDrawerOpened(View drawerView) { } @Override public void onDrawerClosed(View drawerView) { clearBlurImage(); } }; private void setBlurAlpha(float slideOffset) { if (overlayLayout.getVisibility() != View.VISIBLE) { setBlurImage(); } ViewHelper.setAlpha(overlayLayout, easyOut(slideOffset, 0, 1, 1f)); } public float easyOut(float t, float b, float c, float d) { return c * ((t = t / d - 1) * t * t + 1) + b; } public void setBlurImage() { scaled = null; scaled = BlurUtils.drawViewToBitmap(scaled, contentFrame, contentFrame.getMeasuredWidth(), contentFrame.getMeasuredHeight(), 5, overlayBackground); Bitmap blured = BlurUtils.apply(this, scaled, 15); overlayLayout.setBackground(new BitmapDrawable(blured)); overlayLayout.setVisibility(View.VISIBLE); } public void clearBlurImage() { scaled = null; overlayLayout.setVisibility(View.GONE); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); overlayLayout = this.findViewById(R.id.overlayLayout); menuFrame = this.findViewById(R.id.menu_frame); int[] attrs = { android.R.attr.windowBackground }; TypedValue outValue = new TypedValue(); this.getTheme().resolveAttribute(android.R.attr.windowBackground, outValue, true); TypedArray style = this.getTheme().obtainStyledAttributes(outValue.resourceId, attrs); overlayBackground = style.getDrawable(0); contentFrame = findViewById(R.id.content_frame); drawLayout = (DrawerLayout) this.findViewById(R.id.drawer_layout); drawLayout.setDrawerListener(drawerListner); drawLayout.setScrimColor(Color.TRANSPARENT); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }