我想为某些按钮启动相同的动画,但我不想在同一时间开始我想要一个接一个地开始!我用过这个,但它不起作用!我怎么能解决这个问题? 请帮帮我
pivate void animation(){
Animation fadein= AnimationUtils.loadAnimation(this,R.anim.fadein_btn);
try{
btn_seasons.startAnimation(fadein);
Thread.sleep(250);
}catch (Exception e){
return;
}
try{
btn_main_exit.startAnimation(fadein);
Thread.sleep(250);
}catch (Exception e){
return;
}
try{
btn_main_about.startAnimation(fadein);
Thread.sleep(250);
}catch (Exception e){
return;
}
try{
btn_main_send.startAnimation(fadein);
Thread.sleep(250);
}catch (Exception e){
return;
}
}
*我在onCreate方法上调用我的动画方法!
答案 0 :(得分:0)
让asumme你有这样的布局:
<LinearLayout
android:id="@+id/linear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/btn1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:id="@+id/btn2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:id="@+id/btn3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:id="@+id/btn4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:id="@+id/btn5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:id="@+id/btn6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
这将使用缩放动画一个接一个地延迟90ms的按钮动画,启动延迟为800ms。如果您只想为其中一些按钮设置动画,则需要稍微修改一下代码以满足您自己的需要。这只是一个给你一些想法的例子。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final LinearLayout linear = (LinearLayout)findViewById(R.id.linear);
int delay;
for (int i = 0; i < linear.getChildCount(); i++) {
delay=(i*90)+800;
View v = linear.getChildAt(i);
if (v instanceof Button) {
linear.getChildAt(i).setScaleY(0f);
linear.getChildAt(i).setScaleX(0f);
linear.getChildAt(i).animate()
.setInterpolator(new DecelerateInterpolator(1.6f))
.setStartDelay(delay)
.setDuration(400)
.scaleY(1f)
.scaleX(1f)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
}
})
.start();
}
}
}
答案 1 :(得分:0)
您可以使用AnimatorSet逐个启动每个动画:Choreographing Multiple Animations with AnimatorSet