android - 在用户离开的地方开始一项 Activity

标签 android animation

我有以下代码:

public class SplashScreenActivity extends Activity {

private boolean animated ;

private Handler handler1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState)
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    if (!isPreviouslyLoggedIn()) {
        setContentView(R.layout.splash);

        final TextView revolution=(TextView) findViewById(R.id.textView1);
        final Button login=(Button) findViewById(R.id.loginButton);
        final Button signUp=(Button) findViewById(R.id.signUpButton);

        login.setOnClickListener(loginListener);
        signUp.setOnClickListener(signUpListener);

        if (!animated) {
            animated = true;
            revolution.setVisibility(View.INVISIBLE);
            login.setVisibility(View.INVISIBLE);
            signUp.setVisibility(View.INVISIBLE);

            ImageView image = (ImageView) findViewById(R.id.image);
            TranslateAnimation slide = new TranslateAnimation(0, 0, 100, 0);   
            slide.setDuration(1000);
            image.startAnimation(slide);

            handler1 = new Handler();

            handler1.postDelayed(new Runnable() {
                @Override
                public void run() {
                    revolution.setVisibility(View.VISIBLE);
                    login.setVisibility(View.VISIBLE);
                    signUp.setVisibility(View.VISIBLE);
                }
            },1200);
        }
    }

    else {
        setContentView(R.layout.home);
        Intent intent = new Intent(getApplicationContext(), PickUpActivity.class);
        startActivity(intent);
    }

}

当用户单击其中一个按钮时,他会在同一应用程序中进入不同的 Activity 。但是,当用户从下一个 Activity 单击返回时,动画将再次开始。如何防止动画再次显示,因为我希望它在用户打开应用程序时只出现一次?

最佳答案

您可以使用 Application 类。在其中声明一个 bool 变量并在启动第二个 Activity 之前将其设置为“true”。在第一个 Activity 的 onCreate() 中检查此 bool 值并仅执行动画false(这意味着用户尚未开始第二个 Activity )。例如,在包中创建名为 App 的类:

    public class App extends Application{    

    private static boolean animated;

    @Override
    public void onCreate() {
        super.onCreate();
        animated = false;
    }

    public static boolean getAnimated(){
        return animated;
    }

    public static void setAnimated(boolean animated1){
        animated = animated1;
    }

}

manifest中注册App:

<application
        android:icon= ...
        android:label= ...
        android:name="yourpackage.name.App" >

(我想你的包名称是:“yourpackage.name”)

现在像这样更改您的代码:

if (!App.getAnimated()) {
            App.setAnimated(true);
            revolution.setVisibility(View.INVISIBLE);
            login.setVisibility(View.INVISIBLE);
            signUp.setVisibility(View.INVISIBLE);
            ...

或者您可以使用sharedpreferences并在您想要启动动画时从中检索 bool 值。您必须将其设置为默认值“false”,并且当用户启动第二个Activity时,您必须设置它“真实”。

关于android - 在用户离开的地方开始一项 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12929420/

相关文章:

android - 如何在 Jetpack Compose 中做 Multiline 芯片组?

android - "Error: The given sign-in provider is disabled for Firebase project."但我启用了 firebase google auth

java - 如何读取php代码对android java代码的响应

jquery - 动画 div 不会隐藏在父项下

iphone - 带动画的电子邮件图片

android - RxJava2 表单验证

java - 从 Android 应用程序将带有文本的图像发布到 linkedIn

ios - UITableViewCell 的自定义行动画

javascript - 为什么这会移动元素 4 次?

jquery - 如何对内容 block 进行动画处理?