Example usage for android.graphics.drawable Drawable setCallback

List of usage examples for android.graphics.drawable Drawable setCallback

Introduction

In this page you can find the example usage for android.graphics.drawable Drawable setCallback.

Prototype

public final void setCallback(@Nullable Callback cb) 

Source Link

Document

Bind a Callback object to this Drawable.

Usage

From source file:Main.java

public static void unbindDrawable(Drawable d) {
    if (d != null)
        d.setCallback(null);
}

From source file:Main.java

/**
 * Hack to fix pre JB MR1 Kudos to @cyrilmottier
 *
 * @param view     view drawable attached too.
 * @param drawable drawable which gets invalidated
 *///from ww w  .jav  a 2  s.co m
static void fixParallaxBackgroundPreJBMR1(final View view, final Drawable drawable) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) {
        drawable.setCallback(new Drawable.Callback() {
            @Override
            public void invalidateDrawable(Drawable who) {
                view.setBackgroundDrawable(who);
            }

            @Override
            public void scheduleDrawable(Drawable who, Runnable what, long when) {
            }

            @Override
            public void unscheduleDrawable(Drawable who, Runnable what) {
            }
        });
    }
}

From source file:Main.java

/**
 * Hack to fix pre JB MR1 Kudos to @cyrilmottier
 *
 * @param view     view drawable attached too.
 * @param drawable drawable which gets invalidated
 *//*from  w  ww  . j a v a2  s.  c om*/
static void fixParallaxBackgroundPreJBMR1(final View view, final Drawable drawable) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
        drawable.setCallback(new Drawable.Callback() {
            @Override
            public void invalidateDrawable(Drawable who) {
                view.setBackgroundDrawable(who);
            }

            @Override
            public void scheduleDrawable(Drawable who, Runnable what, long when) {
            }

            @Override
            public void unscheduleDrawable(Drawable who, Runnable what) {
            }
        });
    }
}

From source file:Main.java

/**
 * Hack to fix pre JB MR1 Kudos to @cyrilmottier
 *
 * @param view     view drawable attached too.
 * @param drawable drawable which gets invalidated
 */// w w  w . j  a va 2  s . com
static void fixParallaxBackgroundPreJBMR1(final View view, final Drawable drawable) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
        drawable.setCallback(new Drawable.Callback() {
            @SuppressWarnings("deprecation")
            @Override
            public void invalidateDrawable(Drawable who) {
                view.setBackgroundDrawable(who);
            }

            @Override
            public void scheduleDrawable(Drawable who, Runnable what, long when) {
            }

            @Override
            public void unscheduleDrawable(Drawable who, Runnable what) {
            }
        });
    }
}

From source file:Main.java

public static void unBindDrawables(View view) {
    if (view != null) {
        try {// w  w  w. j  a  v a 2  s . c o  m
            Drawable drawable = view.getBackground();
            if (drawable != null) {
                drawable.setCallback(null);
            }
            if (view instanceof ViewGroup && !(view instanceof AdapterView)) {
                ViewGroup viewGroup = (ViewGroup) view;
                int viewGroupChildCount = viewGroup.getChildCount();
                for (int j = 0; j < viewGroupChildCount; j++) {
                    unBindDrawables(viewGroup.getChildAt(j));
                }
                viewGroup.removeAllViews();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

From source file:Main.java

public static void traverseAndRecolor(View root, int color, boolean withStates,
        boolean setClickableItemBackgrounds) {
    Context context = root.getContext();

    if (setClickableItemBackgrounds && root.isClickable()) {
        StateListDrawable selectableItemBackground = new StateListDrawable();
        selectableItemBackground.addState(new int[] { android.R.attr.state_pressed },
                new ColorDrawable((color & 0xffffff) | 0x33000000));
        selectableItemBackground.addState(new int[] { android.R.attr.state_focused },
                new ColorDrawable((color & 0xffffff) | 0x44000000));
        selectableItemBackground.addState(new int[] {}, null);
        root.setBackground(selectableItemBackground);
    }/*from  w w w  . jav  a 2 s .c om*/

    if (root instanceof ViewGroup) {
        ViewGroup parent = (ViewGroup) root;
        for (int i = 0; i < parent.getChildCount(); i++) {
            traverseAndRecolor(parent.getChildAt(i), color, withStates, setClickableItemBackgrounds);
        }

    } else if (root instanceof ImageView) {
        ImageView imageView = (ImageView) root;
        Drawable sourceDrawable = imageView.getDrawable();
        if (withStates && sourceDrawable != null && sourceDrawable instanceof BitmapDrawable) {
            imageView.setImageDrawable(
                    makeRecoloredDrawable(context, (BitmapDrawable) sourceDrawable, color, true));
        } else {
            imageView.setColorFilter(color, PorterDuff.Mode.MULTIPLY);
        }

    } else if (root instanceof TextView) {
        TextView textView = (TextView) root;
        if (withStates) {
            int sourceColor = textView.getCurrentTextColor();
            ColorStateList colorStateList = new ColorStateList(
                    new int[][] { new int[] { android.R.attr.state_pressed },
                            new int[] { android.R.attr.state_focused }, new int[] {} },
                    new int[] { sourceColor, sourceColor, color });
            textView.setTextColor(colorStateList);
        } else {
            textView.setTextColor(color);
        }

    } else if (root instanceof AnalogClock) {
        AnalogClock analogClock = (AnalogClock) root;
        try {
            Field hourHandField = AnalogClock.class.getDeclaredField("mHourHand");
            hourHandField.setAccessible(true);
            Field minuteHandField = AnalogClock.class.getDeclaredField("mMinuteHand");
            minuteHandField.setAccessible(true);
            Field dialField = AnalogClock.class.getDeclaredField("mDial");
            dialField.setAccessible(true);
            BitmapDrawable hourHand = (BitmapDrawable) hourHandField.get(analogClock);
            if (hourHand != null) {
                Drawable d = makeRecoloredDrawable(context, hourHand, color, withStates);
                d.setCallback(analogClock);
                hourHandField.set(analogClock, d);
            }
            BitmapDrawable minuteHand = (BitmapDrawable) minuteHandField.get(analogClock);
            if (minuteHand != null) {
                Drawable d = makeRecoloredDrawable(context, minuteHand, color, withStates);
                d.setCallback(analogClock);
                minuteHandField.set(analogClock, d);
            }
            BitmapDrawable dial = (BitmapDrawable) dialField.get(analogClock);
            if (dial != null) {
                Drawable d = makeRecoloredDrawable(context, dial, color, withStates);
                d.setCallback(analogClock);
                dialField.set(analogClock, d);
            }
        } catch (NoSuchFieldException ignored) {
        } catch (IllegalAccessException ignored) {
        } catch (ClassCastException ignored) {
        } // TODO: catch all exceptions?
    }
}

From source file:com.facebook.litho.ComponentHostUtils.java

/**
 * Mounts a drawable into a view./*w w  w. j  ava2 s.  c  o  m*/
 * @param view view into which the drawable should be mounted
 * @param drawable drawable to be mounted
 * @param bounds bounds of the drawable being mounted
 * @param flags flags that determine whether the drawable obtains state from the view
 * @param nodeInfo nodeInfo associated to the drawable node
 */
static void mountDrawable(View view, Drawable drawable, Rect bounds, int flags, NodeInfo nodeInfo) {
    drawable.setVisible(view.getVisibility() == View.VISIBLE, false);
    drawable.setCallback(view);
    maybeSetDrawableState(view, drawable, flags, nodeInfo);
    view.invalidate(bounds);
}

From source file:com.micabyte.android.app.BaseActivity.java

private static void unbindViewReferences(View view) {
    // set all listeners to null
    try {/*w ww .  j av a 2s  . com*/
        view.setOnClickListener(null);
    } catch (Throwable mayHappen) {
        // NOOP - not supported by all views/versions
    }
    try {
        view.setOnCreateContextMenuListener(null);
    } catch (Throwable mayHappen) {
        // NOOP - not supported by all views/versions
    }
    try {
        view.setOnFocusChangeListener(null);
    } catch (Throwable mayHappen) {
        // NOOP - not supported by all views/versions
    }
    try {
        view.setOnKeyListener(null);
    } catch (Throwable mayHappen) {
        // NOOP - not supported by all views/versions
    }
    try {
        view.setOnLongClickListener(null);
    } catch (Throwable mayHappen) {
        // NOOP - not supported by all views/versions
    }
    try {
        view.setOnClickListener(null);
    } catch (Throwable mayHappen) {
        // NOOP - not supported by all views/versions
    }
    // set background to null
    Drawable d = view.getBackground();
    if (d != null) {
        d.setCallback(null);
    }
    if (view instanceof ImageView) {
        final ImageView imageView = (ImageView) view;
        d = imageView.getDrawable();
        if (d != null) {
            d.setCallback(null);
        }
        imageView.setImageDrawable(null);
        imageView.setImageBitmap(null);
    }
    if (view instanceof ImageButton) {
        final ImageButton imageB = (ImageButton) view;
        d = imageB.getDrawable();
        if (d != null) {
            d.setCallback(null);
        }
        imageB.setImageDrawable(null);
    }
    // destroy WebView
    if (view instanceof WebView) {
        view.destroyDrawingCache();
        ((WebView) view).destroy();
    }
}

From source file:Main.java

public static Bitmap flattenExtensionIcon(Drawable baseIcon, int color) {
    if (baseIcon == null) {
        return null;
    }//w w w  . ja  v  a 2  s. co  m

    Bitmap outBitmap = Bitmap.createBitmap(EXTENSION_ICON_SIZE, EXTENSION_ICON_SIZE, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(outBitmap);
    baseIcon.setBounds(0, 0, EXTENSION_ICON_SIZE, EXTENSION_ICON_SIZE);
    baseIcon.setColorFilter(color, PorterDuff.Mode.SRC_IN);
    baseIcon.draw(canvas);
    baseIcon.setColorFilter(null);
    baseIcon.setCallback(null); // free up any references
    return outBitmap;
}

From source file:Main.java

private static Drawable recolor(Resources res, Drawable drawable, int color) {
    if (drawable == null) {
        return null;
    }/*from  ww  w .java 2s .  c o  m*/

    Bitmap outBitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(),
            Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(outBitmap);
    drawable.setBounds(0, 0, outBitmap.getWidth(), outBitmap.getHeight());
    drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
    drawable.draw(canvas);
    drawable.setColorFilter(null);
    drawable.setCallback(null); // free up any references
    return new BitmapDrawable(res, outBitmap);
}