Example usage for android.graphics.drawable VectorDrawable setCallback

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

Introduction

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

Prototype

public final void setCallback(@Nullable Callback cb) 

Source Link

Document

Bind a Callback object to this Drawable.

Usage

From source file:com.hippo.vector.AnimatedVectorDrawable.java

public void inflate(Context context, XmlPullParser parser, AttributeSet attrs)
        throws XmlPullParserException, IOException {
    final AnimatedVectorDrawableState state = mAnimatedVectorState;

    int eventType = parser.getEventType();
    float pathErrorScale = 1;
    while (eventType != XmlPullParser.END_DOCUMENT) {
        if (eventType == XmlPullParser.START_TAG) {
            final String tagName = parser.getName();
            if (ANIMATED_VECTOR.equals(tagName)) {
                final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AnimatedVectorDrawable);
                int drawableRes = a.getResourceId(R.styleable.AnimatedVectorDrawable_drawable, 0);
                if (drawableRes != 0) {
                    VectorDrawable vectorDrawable = VectorDrawable.create(context, drawableRes);
                    if (vectorDrawable != null) {
                        vectorDrawable.setAllowCaching(false);
                        vectorDrawable.setCallback(mCallback);
                        pathErrorScale = vectorDrawable.getPixelSize();
                        if (state.mVectorDrawable != null) {
                            state.mVectorDrawable.setCallback(null);
                        }/* w ww.  j a va 2  s .c  om*/
                        state.mVectorDrawable = vectorDrawable;
                    }
                }
                a.recycle();
            } else if (TARGET.equals(tagName)) {
                final TypedArray a = context.obtainStyledAttributes(attrs,
                        R.styleable.AnimatedVectorDrawableTarget);
                final String target = a.getString(R.styleable.AnimatedVectorDrawableTarget_name);
                final int animResId = a.getResourceId(R.styleable.AnimatedVectorDrawableTarget_animation, 0);
                if (animResId != 0) {
                    state.addTargetAnimator(target,
                            AnimatorInflater.loadAnimator(context, animResId, pathErrorScale));
                }
                a.recycle();
            }
        }

        eventType = parser.next();
    }
}