我目前正在为我的Android应用程序开发一个非常简单的用户界面。我的目标是在启动时动画一些(我不知道有多少)按钮,并且永远不会再次。
所以按照官方文档,阅读java doc并在stackoverflow上搜索,我终于得到了它的工作。以下是我对单个测试视图的处理。
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);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
test_text.startAnimation(test_anim);
}
此过程有效,动画在活动开始时执行,唯一的问题是每次活动更改状态时都会调用onWindowFocusChanged()方法。因此,当应用程序恢复时,当布局旋转时,文本会动画显示动画。
所以,重复一下:我的目标是在应用程序启动时立即为文本设置动画,然后永久停止。
如果有帮助,我已经尝试将动画启动放在其他方法中,如onStart()或onResume(),但问题仍然存在。
答案 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