作为自定义导航抽屉的一部分,我要求将片段从全屏幕设置为屏幕的较小元素。
我面临的问题是操作栏需要托管在父活动而不是片段上。解决在动画开始和结束时我正在显示的片段上没有动作条的限制,并隐藏动作栏。
我正在经历帧丢失,动画然后变为即时并且不显示缩放,如果我停止隐藏或显示动作条并且只显示整个时间,动画就可以正常工作。
我的动画代码:
private void setUpAnimations() {
scaleIn = AnimationUtils.loadAnimation(this, R.anim.scale_in);
scaleIn.setFillAfter(true);
scaleIn.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
menu.bringToFront();
isAnimating = false;
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
isAnimating = true;
}
});
scaleOut = AnimationUtils.loadAnimation(this, R.anim.scale_out);
scaleOut.setFillAfter(true);
scaleOut.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
isAnimating = false;
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
isAnimating = true;
}
});
menuScaleIn = AnimationUtils.loadAnimation(this, R.anim.menu_scale_in);
menuScaleOut = AnimationUtils.loadAnimation(this, R.anim.menu_scale_out);
}
public void scaleIn() {
isMenuOpen = true;
getSupportActionBar().hide();
containter.startAnimation(scaleIn);
menu.startAnimation(menuScaleIn);
}
public void scaleOut() {
isMenuOpen = false;
containter.bringToFront();
containter.startAnimation(scaleOut);
menu.startAnimation(menuScaleOut);
getSupportActionBar().show();
}
答案 0 :(得分:0)
我没有真正解决这个问题,而是将工具栏放在父活动上,并通过界面从片段中调用hide和show。这肯定不是解决方案,但我正在截止日期前工作。