Android 如何使用Epicentre?
我在两个活动之间使用爆炸转换。我希望设置“爆炸”效果,使其他视图远离被触摸的视图。看起来它符合这个目的,但我无法让我的转换实际触发onGetEpicenter。我做错了什么 以下是我必须设置回调并启动转换的方法:Android 如何使用Epicentre?,android,android-animation,android-transitions,Android,Android Animation,Android Transitions,我在两个活动之间使用爆炸转换。我希望设置“爆炸”效果,使其他视图远离被触摸的视图。看起来它符合这个目的,但我无法让我的转换实际触发onGetEpicenter。我做错了什么 以下是我必须设置回调并启动转换的方法: public void Explode(View view) { Explode explode = new Explode(); explode.setEpicenterCallback(new MyEpicenterCallback(view)); getW
public void Explode(View view) {
Explode explode = new Explode();
explode.setEpicenterCallback(new MyEpicenterCallback(view));
getWindow().setExitTransition(explode);
Intent intent = new Intent(this, MainActivity.class);
ActivityOptions transitionActivityOptions =
ActivityOptions.makeSceneTransitionAnimation(MainActivity.this);
startActivity(intent, transitionActivityOptions.toBundle());
}
…下面是我创建的回调:
public class MyEpicenterCallback extends Transition.EpicenterCallback {
View epicenterView;
public MyEpicenterCallback(View view) {
epicenterView = view;
}
@Override
public Rect onGetEpicenter(Transition transition) {
return new Rect(epicenterView.getLeft(), epicenterView.getTop(), epicenterView.getRight(), epicenterView.getBottom());
}
}
永远不会调用onGetEpicenter。谢谢你看 我也觉得很奇怪。看起来epicenter回调在中被覆盖,您对此无能为力 一个不知何故肮脏的解决方法是防止更改,例如:
explode = new Explode() {
{
super.setEpicenterCallback(new Transition.EpicenterCallback() {
@Override
public Rect onGetEpicenter(Transition transition) {
return epicenter;
}
);
}
@Override
public void setEpicenterCallback(EpicenterCallback epicenterCallback) {
}
};
getWindow().setExitTransition(explode);
epicenter是活动中的一个矩形字段,您可以在调用startActivity之前进行设置。如果它对任何人都有帮助,我想我应该提到,在转换中有共享元素的常见情况下,第一个共享元素将自动成为转换的中心。这在大多数情况下似乎是合理的。