package com.lb.three_phases_bottom_sheet; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.support.annotation.FloatRange; import android.support.v4.view.ViewCompat; import android.support.v8.renderscript.Allocation; import android.support.v8.renderscript.Element; import android.support.v8.renderscript.RenderScript; import android.support.v8.renderscript.ScriptIntrinsicBlur; import android.util.TypedValue; import android.view.View; import android.view.inputmethod.InputMethodManager; public class Utils { public enum ViewPadding {START_OR_LEFT, BOTTOM, END_OR_RIGHT, TOP} /** * hides the soft keyboard for the activity , based on the currently focused view */ public static void hideSoftKeyboardFromFocusedView(final Activity activity) { if (activity == null) return; final InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); final View focusedView = activity.getWindow().getCurrentFocus(); if (focusedView != null) imm.hideSoftInputFromWindow(focusedView.getWindowToken(), 0); } /** * returns the height of the action bar */ public static int getActionBarHeight(final Context context) { // based on http://stackoverflow.com/questions/12301510/how-to-get-the-actionbar-height final TypedValue tv = new TypedValue(); int actionBarHeight = 0; if (context.getTheme().resolveAttribute(R.attr.actionBarSize, tv, true)) actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, context.getResources() .getDisplayMetrics()); return actionBarHeight; } public static Bitmap blur(Context context, Bitmap srcBitmap, @FloatRange(from = 0.0f, to = 25.0f) float radius) { if (srcBitmap == null) return null; Bitmap outputBitmap = null; RenderScript rs = null; try { rs = RenderScript.create(context); outputBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(outputBitmap); canvas.drawBitmap(srcBitmap, 0, 0, null); Allocation overlayAlloc = Allocation.createFromBitmap(rs, outputBitmap); ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); blur.setInput(overlayAlloc); blur.setRadius(radius); blur.forEach(overlayAlloc); overlayAlloc.copyTo(outputBitmap); return outputBitmap; } catch (Exception ex) { if (outputBitmap != null) outputBitmap.recycle(); return srcBitmap; } finally { if (rs != null) rs.destroy(); } } /** * sets a single padding on a view, without changing the rest of the padding values of the view */ public static void setPaddingOrRelativePadding(View v, ViewPadding paddingType, int paddingValueToSetInPixels) { switch (paddingType) { case BOTTOM: ViewCompat.setPaddingRelative(v, ViewCompat.getPaddingStart(v), v.getPaddingTop(), ViewCompat.getPaddingEnd(v), paddingValueToSetInPixels); break; case END_OR_RIGHT: ViewCompat.setPaddingRelative(v, ViewCompat.getPaddingStart(v), v.getPaddingTop(), paddingValueToSetInPixels, v.getPaddingBottom()); break; case START_OR_LEFT: ViewCompat.setPaddingRelative(v, paddingValueToSetInPixels, v.getPaddingTop(), ViewCompat.getPaddingEnd(v), v.getPaddingBottom()); break; case TOP: ViewCompat.setPaddingRelative(v, ViewCompat.getPaddingStart(v), paddingValueToSetInPixels, ViewCompat.getPaddingEnd(v), v.getPaddingBottom()); break; } } }