gpt4 book ai didi

java - 如何在启动时仅对 Android View 进行一次动画处理?

转载 作者:太空宇宙 更新时间:2023-11-04 13:33:56 25 4
gpt4 key购买 nike

我目前正在为我的 Android 应用程序开发一个非常简单的 UI。我的目标是在启动时为一些(我还不知道有多少)按钮设置动画,并且再也不会。

所以按照官方文档,阅读java文档并在stackoverflow上搜索,我终于成功了。这是我对单个测试 View 所做的操作。

  • 在 OnCreate() 方法中设置 View 和动画。
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);
}

这个过程有效,动画在 Activity 启动时执行,唯一的问题是每次 Activity 状态更改时都会调用 onWindowFocusChanged() 方法。因此,当应用程序恢复、布局旋转等时,文本会呈现动画。

所以,重复一遍:我的目标是在应用程序启动时仅对文本进行一次动画处理,然后永远停止。

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

最佳答案

您可以使用 SharePreferences 来检查 boolean 值。如果为 true 或不存在,则意味着首次启动,或者您可以在 onWindowFOcusChange() 方法中为应用程序设置动画。将其设置为 false 即可不再 aniamte。

////////////////////////////
/// CONSTANTS
////////////////////////////

private static final String PREF_NAME = "pref_name";
public static final String IS_STARTUP = "is_startup";

////////////////////////////
/// FIELDS
////////////////////////////

private SharedPreferences settings;

@Override
public void onWindowFocusChanged(boolean hasFocus) {

settings = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
if (settings.getBoolean(IS_START_UP, true)) {
test_text.startAnimation(test_anim);
settings.edit().putBoolean(IS_START_UP, false).commit();
}
}

如果您想在下次启动应用程序时再次启动,可以在退出应用程序时将首选项 IS_START_UP 设置为 true。

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

关于java - 如何在启动时仅对 Android View 进行一次动画处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31891996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com