package com.likebamboo.osa.android.ui.view.blur; import android.app.Activity; import android.graphics.Bitmap; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.ImageView; import com.likebamboo.osa.android.R; /** * EtsyActionBarDrawerToggle.java * * @author Manabu-GT on 6/12/14. */ public class EtsyActionBarDrawerToggle extends ActionBarDrawerToggle { private static final int DEFAULT_RADIUS = 10; private static final int DEFAULT_DOWN_SAMPLING = 3; private Activity mActivity; private View mContainer; private ImageView mBlurImage; private int mBlurRadius; private int mDownSampling; public EtsyActionBarDrawerToggle(Activity activity, DrawerLayout drawerLayout, int openDrawerContentDescRes, int closeDrawerContentDescRes) { super(activity, drawerLayout, openDrawerContentDescRes, closeDrawerContentDescRes); init(activity); } public EtsyActionBarDrawerToggle(Activity activity, DrawerLayout drawerLayout, Toolbar toolbar, int openDrawerContentDescRes, int closeDrawerContentDescRes) { super(activity, drawerLayout, toolbar, openDrawerContentDescRes, closeDrawerContentDescRes); init(activity); } public void setBlurImage() { mBlurImage.setImageBitmap(null); mBlurImage.setVisibility(View.VISIBLE); // do the downscaling for faster processing Bitmap downScaled = Util.drawViewToBitmap(mContainer, mContainer.getWidth(), mContainer.getHeight(), mDownSampling); if (downScaled == null) { return; } // apply the blur using the renderscript Bitmap blurred = Blur.apply(mActivity, downScaled, mBlurRadius); if (blurred == null) { return; } mBlurImage.setImageBitmap(blurred); downScaled.recycle(); } public void clearBlurImage() { mBlurImage.setVisibility(View.GONE); mBlurImage.setImageBitmap(null); } public void setBlurRadius(int blurRadius) { if (0 < blurRadius && blurRadius <= 25) { mBlurRadius = blurRadius; } } public void setDownSampling(int downSampling) { mDownSampling = downSampling; } private void init(Activity activity) { mActivity = activity; mBlurRadius = DEFAULT_RADIUS; mDownSampling = DEFAULT_DOWN_SAMPLING; mContainer = activity.findViewById(R.id.container); mBlurImage = (ImageView) activity.findViewById(R.id.blur_view); } private void setBlurAlpha(float slideOffset) { if (mBlurImage.getVisibility() != View.VISIBLE) { setBlurImage(); } Util.setAlpha(mBlurImage, slideOffset); } @Override public void onDrawerSlide(final View drawerView, final float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); if (slideOffset > 0f) { setBlurAlpha(slideOffset); } else { clearBlurImage(); } } @Override public void onDrawerClosed(View drawerView) { super.onDrawerClosed(drawerView); clearBlurImage(); } }