问题的出现
我在 onCreate 中调用了一个 initShowAnim() 方法,该方法为 mImageIv(一个 ImageView) 创建揭露动画:
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
initShowAnim();
}
private void initShowAnim() {
// ...
mShowAnim = ViewAnimationUtils
.createCircularReveal(mImageIv, cx, cy, 0f, endRadius); // 抛出异常的语句
// ...
}
运行后就抛出了该异常:
java.lang.IllegalStateException: Cannot start this animator on a detached view!
问题的解决
将创建揭露动画的语句放在 view.post() 方法中,如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
mImageIv.post(new Runnable() {
@Override
public void run() {
initShowAnim();
}
});
}