Jon*_*Jon 16 java user-interface android transition
我在两个活动之间有一个共享元素转换,它按以下方式工作:
Intent someintent = new Intent(this, someclass.class);
if (Build.VERSION.SDK_INT >= 21) {
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this
, new Pair<>(viewClicked.findViewById(R.id.someimage), "someimage")
, new Pair<>(viewClicked.findViewById(R.id.someicon), "someicon")
);
startActivity(someintent, options.toBundle());
}
else {
startActivity(someintent);
}
Run Code Online (Sandbox Code Playgroud)
这种方法很好,但转变的速度非常缓慢.首次点击图像时,它似乎会在转换发生之前停顿一两秒钟.这是由于正在加载的活动的"权重"还是可配置的延迟?
Ale*_*der 20
你有没有尝试改变持续时间enterTransition和returntransition:
private Transition enterTransition() {
ChangeBounds bounds = new ChangeBounds();
bounds.setDuration(2000);
return bounds;
}
private Transition returnTransition() {
ChangeBounds bounds = new ChangeBounds();
bounds.setInterpolator(new DecelerateInterpolator());
bounds.setDuration(2000);
return bounds;
}
Run Code Online (Sandbox Code Playgroud)
并在onCreate:
getWindow().setSharedElementEnterTransition(enterTransition());
getWindow().setSharedElementReturnTransition(returnTransition());
Run Code Online (Sandbox Code Playgroud)
Cod*_*sed 15
另一种方式可以帮助一些已经在其样式中设置过渡的设置:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().getSharedElementEnterTransition().setDuration(2000);
getWindow().getSharedElementReturnTransition().setDuration(2000)
.setInterpolator(new DecelerateInterpolator());
}
Run Code Online (Sandbox Code Playgroud)