我有以下代码:
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);
}
}
当用户点击其中一个按钮时,会导致他在同一个应用中执行不同的活动。但是,当用户从下一个活动单击时,将再次启动动画。如何阻止动画再次显示,因为我希望它只在用户打开应用程序时出现一次?
答案 0 :(得分:1)
您可以为此设置标记,首次保留标记true
,当用户点击任意按钮时,将标记值设置为false
。
现在,如果标记值为true
,则启动动画。
答案 1 :(得分:1)
你可以使用Application
class.Declare一个boolean var并在开始第二个Activity之前将它设置为“true”。在你的第一个Activity的onCreate()中检查这个boolean并只做动画它是假的(它表示用户尚未启动第二个活动)。例如,在包中创建名为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;
}
}
在App
注册manifest
:
<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
并在想要开始动画时从中检索布尔值。您必须将其设置为默认值“false”,当用户启动第二个Activity时,您必须将其设置为“true”