如何在启动时仅为Android视图制作动画一次?

时间:2015-08-08 10:10:27

标签: java android animation android-activity view

我目前正在为我的Android应用程序开发一个非常简单的用户界面。我的目标是在启动时动画一些(我不知道有多少)按钮,并且永远不会再次。

所以按照官方文档,阅读java doc并在stackoverflow上搜索,我终于得到了它的工作。以下是我对单个测试视图的处理。

  • 在OnCreate()方法中设置视图和动画。
private TextView test_text;
private Animation test_anim;
...

protected void onCreate(Bundle savedInstanceState) {

   ...

   test_text = (TextView) findViewById(R.id.text);
   test_anim = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.test_animation);
}
  • 在OnWindowFocusChanged()方法中启动动画。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
     test_text.startAnimation(test_anim);
}

此过程有效,动画在活动开始时执行,唯一的问题是每次活动更改状态时都会调用onWindowFocusChanged()方法。因此,当应用程序恢复时,当布局旋转时,文本会动画显示动画。

所以,重复一下:我的目标是在应用程序启动时立即为文本设置动画,然后永久停止。

如果有帮助,我已经尝试将动画启动放在其他方法中,如onStart()或onResume(),但问题仍然存在。

3 个答案:

答案 0 :(得分:0)

只需添加一个初始值为true的布尔变量,在第一次将值改为false后,在onfocus中可以添加另一个条件

If(boolean){do the animation;
boolean=false;}

这确实是你想要的,但如果你想让动画在应用程序生命周期中成为一次,你可以使用共享的prefs或者只是在应用程序类中添加一个静态的布尔变量

答案 1 :(得分:0)

您可以使用SharePreferences来检查布尔值。如果是或否存在意味着首次启动,或者您可以在onWindowFOcusChange()方法中为应用设置动画。将其设置为false,从而再也不会出现aniamte。

if (!settings.getBoolean(IS_START_UP, false)) {
    settings.edit().putBoolean(IS_START_UP, true).commit();
}

如果您想在下次启动应用时再次使用aniamte,则可以在退出应用程序时将pref IS_START_UP设置为true。

PFQuery

答案 2 :(得分:0)

使用SharedPreference存储布尔变量&在第一次动画之后立即使它变为真。每次动画开始前都要检查一下。

WinA