如何在android中一个接一个地动画图像

时间:2011-06-11 08:38:34

标签: android animation

我有三张图片描绘了公司的标志,名称和口号。我想以这样的方式制作这三个图像的动画,首先是徽标,然后是名称,然后是口号。在这三个动画之后,我希望屏幕消失并显示一个新的活动。这该怎么做?请帮帮我。

3 个答案:

答案 0 :(得分:1)

如果我理解正确的话,你会在同一个屏幕上显示这三个图像,然后在一定时间后显示每个图像。

只要在启动画面显示时你不打算做任何事情,图像之间的时间少于五秒,你就不会拥有使用另一个线程。

所以,最简单的方法是设置一个图像,睡一觉,然后显示下一个图像。使用布尔值,这样就不会在用户按下后退按钮之前显示两次启动画面,然后才能按下后退按钮。

if(!showedSplash)
{
    logoImageView.setImageDrawable(R.id.drawable.company_logo);
    Thread.sleep(1000); // sleep for a second (1000 ms)
    nameImageView.setImageDrawable(R.id.drawable.company_name);
    Thread.sleep(1000);
    sloganImageView.setImageDrawable(R.id.drawable.company_slogan);
    Thread.sleep(10000);
    showedSplash = true;'
}

现在转到下一个活动

Intent i = new Intent(this,activity2.class);    
startActivity(i);   

不要忘记将活动放入清单!

<activity android:name=".activity2" android:label="@string/activity2_name"/>

答案 1 :(得分:1)

为您的第一个动画添加一个侦听器,并在方法中onAnimationEnd(),然后启动第二个图像的第二个动画,依此类推 示例:

注意:将您的img2和img3可见性初始化为GONE

public class YourActivity extends Activity implements AnimationListener{
......
@Override 
public void onCreate( Bundle savedInstanceState){
super.onCreate(savedInstanceState);
....

ScaleAnimation a1 , a2 , a3;
//define your animations 
a1 = new ScaleAnimation(0.0f,1.0f);
a2 = new ScaleAnimation(0.0f,1.0f);
a3 = new ScaleAnimation(0.0f,1.0f);

// duration and behavior of ur animations
a1.setFillAfter(true);
a1.setDuration(1000);
a2.setFillAfter(true);
a2.setDuration(1000);
a3.setFillAfter(true);
a3.setDuration(1000);

a1.setAnimationListener(this);
a2.setAnimationListener(this);
a3.setAnimationListener(this);

img1.startAnimation(a1);
}

Override
public void onAnimationEnd(Animation a){
if(a == a1 ){ 
   img2.setVisibility(View.VISIBLE);
   img2.startAnimation(a2);
}

if(a == a2){
   img3.setVisibility(View.VISIBLE);
   img3.startAnimation(a3);
}

if(a == a3){
   startActivity(new Intent(YourActivity.this , SecondActivity.class);
}
}
}

答案 2 :(得分:0)

有两种方法可以实现这一目标,您可以阅读它们here

希望这有帮助!