Android 在AppCompat v23中禁用ActionMode的动画
在AppCompat的第23版中,它为ActionMode引入了淡入/淡出动画,但我需要禁用它 动机:我改变了表格布局的背景色,但我无法再现完全相同的褪色动画,所以看起来很奇怪。我尝试使用ObjectAnimator,但它并不像新的AppCompat v23中那样是一个合适的“alpha”效果 根据此处(Mattia的回答),动画似乎是从Java创建的(因此不可能覆盖“anim”文件夹中的xml): 你知道如何禁用新的动作模式动画吗 在两种颜色之间复制非常相同的效果对我来说也是一种选择,但是,正如前面所解释的,它感觉不一样Android 在AppCompat v23中禁用ActionMode的动画,android,animation,Android,Animation,在AppCompat的第23版中,它为ActionMode引入了淡入/淡出动画,但我需要禁用它 动机:我改变了表格布局的背景色,但我无法再现完全相同的褪色动画,所以看起来很奇怪。我尝试使用ObjectAnimator,但它并不像新的AppCompat v23中那样是一个合适的“alpha”效果 根据此处(Mattia的回答),动画似乎是从Java创建的(因此不可能覆盖“anim”文件夹中的xml): 你知道如何禁用新的动作模式动画吗 在两种颜色之间复制非常相同的效果对我来说也是一种选择,但是,正
谢谢,安德里亚,我也有同样的问题。我是这样解决的: 1) 显示actionmode:我没有禁用fadein动画:我只是将actionbar的颜色设置为与actionmode相同的颜色 2) 隐藏操作模式:对于禁用淡入淡出,我只需在onDestroyActionMode中进行此调用:
findViewById(R.id.action_mode_bar).setVisibility(View.INVISIBLE);
别忘了在那之后将“上一个颜色”设置为actionbar。我也发现了这个问题,我想提出另一个解决方案:尝试设置TabLayout背景颜色更改的动画,与ActionMode同步
int colorFrom;
int colorTo;
TypedValue colorPrimaryTypedValue = new TypedValue();
TypedValue actionModeBackgroundTypedValue = new TypedValue();
getActivity().getTheme().resolveAttribute(R.attr.colorPrimary, colorPrimaryTypedValue, true);
getActivity().getTheme().resolveAttribute(R.attr.actionModeBackground, actionModeBackgroundTypedValue, true);
if (actionModeVisible) {
colorFrom = colorPrimaryTypedValue.data;
colorTo = actionModeBackgroundTypedValue.data;
} else {
colorFrom = actionModeBackgroundTypedValue.data;
colorTo = colorPrimaryTypedValue.data;
}
ValueAnimator colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo);
colorAnimation.setDuration(350); // milliseconds
colorAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animator) {
mTabLayout.setBackgroundColor((int) animator.getAnimatedValue());
}
});
colorAnimation.start();
希望这能帮助别人 自定义视图的解决方案
@Override
public void onDestroyActionMode(ActionMode mode) {
((View) mode.getCustomView().getParent()).setVisibility(View.INVISIBLE);
}
启动操作模式时,必须向其传递回调实现。此回调的方法之一是onDestroyActionMode
。在此方法中,您将收到ActionMode的实例。使用此选项,您可以访问在其上设置的自定义视图并隐藏其父容器
@Override
public void onDestroyActionMode(ActionMode mode) {
((View) mode.getCustomView().getParent()).setVisibility(View.INVISIBLE);
}