我一直在寻找和尝试不同的方法,如下面的代码
public void showActionButtons() {
Animation a1 = AnimationUtils.loadAnimation(getContext(),R.anim.floating_action_button_fade_in);
Animation a2 = AnimationUtils.loadAnimation(getContext(),R.anim.floating_action_button_fade_in);
Animation a3 = AnimationUtils.loadAnimation(getContext(),R.anim.floating_action_button_fade_in);
a1.setStartOffset(300);
m_proximityFloatingActionButton.startAnimation(a1);
m_proximityFloatingActionButton.setVisibility(View.VISIBLE);
a2.setStartOffset(600);
m_geofenceFloatingActionButton.startAnimation(a2);
m_geofenceFloatingActionButton.setVisibility(View.VISIBLE);
a3.setStartOffset(900);
m_locationFloatingActionButton.startAnimation(a3);
m_locationFloatingActionButton.setVisibility(View.VISIBLE);
}
所以我在那里做的是我有3个按钮,我想一个接一个地弹出。我尝试了不同的东西。但这是唯一能让我得到正确结果的东西。但这种方式感觉不对。加载3个完全相同的动画是不对的。那么这样做的另一种方法是最佳实践吗?
答案 0 :(得分:0)
所以在pskink的帮助下我得到了以下代码。如果有人有更好的方法来做到这一点。欢迎您发表答案
%25
答案 1 :(得分:0)
如果您愿意使用开源库,android transition库提供了更容易编写和理解的替代方案。
假设3个按钮是ViewGroup的唯一子节点,下面的代码将产生相同的结果:
Cascade cascade = new Cascade(Cascade.SEQUENTIAL, 0.9f);
ViewTransitionBuilder.transit(findViewById(R.id.lay_buttons)).alpha(0f, 1f).visible().transitViewGroup(new ViewTransitionBuilder.ViewGroupTransition() {
@Override
public void transit(ViewTransitionBuilder builder, ViewTransitionBuilder.ViewGroupTransitionConfig config) {
builder.buildAnimationFor(animationManager);
}
}, cascade);
animationManager.startAnimation(600);
基本上ViewTransitionBuilder
用于指定所需的效果,ViewTransitionBuilder.ViewGroupTransition
用于遍历目标视图(R.id.lay_buttons
)的每个子项,并使用它构建动画。 #39;已添加到animationManager
。
或者,如果同一ViewGroup中的3个按钮不,则以下代码可以正常工作:
ViewTransitionBuilder builder=ViewTransitionBuilder.transit(findViewById(R.id.lay_buttons)).alpha(0f, 1f).visible();
builder.clone().range(0f, 0.33f).target(findViewById(R.id.rotate_android)).buildAnimationFor(animationManager);
builder.clone().range(0.33f, 0.67f).target(findViewById(R.id.slide_subviews)).buildAnimationFor(animationManager);
builder.clone().range(0.67f, 1f).target(findViewById(R.id.slide_bg)).buildAnimationFor(animationManager);
animationManager.startAnimation(600);
要开始使用该库,请添加以下gradle脚本:
compile' com.github.kaichunlin.transition:core:0.9.3'