我有以下代码:
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/