大佬教程收集整理的这篇文章主要介绍了android – 如何动画ActionBar的ActionMode背景?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
可以更改操作栏的背景,甚至可以在两种颜色之间进行动画处理,如下所示:
public static void animate@R_674_7000@nColors(final ActionBar actionBar,final int colorFrom,final int colorTo,final int durationInMs) { final ValueAnimator colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(),colorFrom,colorTo); colorAnimation.addupdateListener(new AnimatorupdateListener() { ColorDrawable colorDrawable = new ColorDrawable(colorFrom); @Override public void onAnimationupdate(final ValueAnimator animator) { colorDrawable.setColor((Integer) animator.getAnimatedValue()); actionBar.setBACkgroundDrawable(colorDrawablE); } }); if (durationInMs >= 0) colorAnimation.setDuration(durationInMs); colorAnimation.start(); }
问题
我无法找到一种获取动作模式视图的方法,因此我可以在某些情况下更改其背景(当它显示时).
我尝试了什么
我发现的只是一种黑客方式,它假定动作模式的id将保持不变,甚至这只适用于“完成”按钮(看起来像“V”的按钮)的视图实际上更像是“取消”).
我还发现了如何通过主题更改它,但这不是我需要的,因为我需要以编程方式进行.
这个问题
如何获取actionMode的视图,或者更确切地说,如何使用动画更改其背景?
您有两个选择,遗憾的是它们都不涉及本机ActionMode API:
ActionBarContextView
负责控制ActionMode
>使用resources.getIdentifier调用Activity.findViewById并传入系统用于ActionBarContextView的ID
>使用反射在ActionBarImpl
中访问Field
以下是两者的示例:
private void animateActionModeViaFindViewById(int colorFrom,int colorTo,int duration) { final int aR_708_11845@Id = getresources().getIdentifier("action_contexT_Bar","id","android"); animateActionMode(findViewById(amId),colorTo,duration); }
使用反射:
private void animateActionModeViaReflection(int colorFrom,int duration) { final ActionBar actionBar = getActionBar(); try { final Field contextView = actionBar.getClass().getDeclaredField("mContextView"); animateActionMode((View) contextView.get(actionBar),duration); } catch (final Exception ignored) { // Nothing to do } }
private void animateActionMode(final View actionMode,final int from,int to,int duration) { final ValueAnimator va = ValueAnimator.ofObject(new ArgbEvaluator(),from,to); final ColorDrawable actionModeBACkground = new ColorDrawable(from); va.addupdateListener(new AnimatorupdateListener() { @Override public void onAnimationupdate(final ValueAnimator animator) { actionModeBACkground.setColor((Integer) animator.getAnimatedValue()); actionMode.setBACkg@R_262_7060@actionModeBACkground); } }); va.setDuration(duration); va.start(); }
结果
以上是大佬教程为你收集整理的android – 如何动画ActionBar的ActionMode背景?全部内容,希望文章能够帮你解决android – 如何动画ActionBar的ActionMode背景?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。