package com.jasonchen.microlang.workers;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.annotation.SuppressLint;
import android.view.View;
import com.jasonchen.microlang.utils.Utility;
import java.util.Objects;
/**
* jasonchen
* 2015/04/10
*/
public class LayerEnablingAnimatorListener extends AnimatorListenerAdapter {
private final View mTargetView;
private int mLayerType;
private Animator.AnimatorListener mAdapter;
@SuppressLint("NewApi")
public LayerEnablingAnimatorListener(View targetView, Animator.AnimatorListener adapter) {
if (Utility.isKK()) {
mTargetView = Objects.requireNonNull(targetView, "Target view cannot be null");
} else {
mTargetView = targetView;
}
this.mAdapter = adapter;
}
public View getTargetView() {
return mTargetView;
}
@Override
public void onAnimationStart(Animator animation) {
super.onAnimationStart(animation);
if (mAdapter != null) {
mAdapter.onAnimationStart(animation);
}
mLayerType = mTargetView.getLayerType();
mTargetView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
// AppLogger.d("View animation is started, enable hardware accelerated");
}
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
if (mAdapter != null) {
mAdapter.onAnimationEnd(animation);
}
mTargetView.setLayerType(mLayerType, null);
// AppLogger.d("View animation is finished, disable hardware accelerated");
}
}