在我的Android应用程序中,我需要设计一个欢迎屏幕,只有在安装和打开应用程序后才会向用户显示一次。该应用程序是一个数据库驱动的应用程序,我希望包括一些3-4屏幕,以帮助用户创建可在应用程序中使用的可重用资源和一些提示。它们将是对话警报,最后一个欢迎屏幕显示“不再显示”复选框。
问题实在是,如何只显示一次欢迎屏幕。非常感谢任何帮助或对此效果的指示。
答案 0 :(得分:35)
以下是我的应用程序中的一些代码。
在您的活动中:
SharedPreferences mPrefs;
final String welcomeScreenShownPref = "welcomeScreenShown";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
// second argument is the default to use if the preference can't be found
Boolean welcomeScreenShown = mPrefs.getBoolean(welcomeScreenShownPref, false);
if (!welcomeScreenShown) {
// here you can launch another activity if you like
// the code below will display a popup
String whatsNewTitle = getResources().getString(R.string.whatsNewTitle);
String whatsNewText = getResources().getString(R.string.whatsNewText);
new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle(whatsNewTitle).setMessage(whatsNewText).setPositiveButton(
R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
SharedPreferences.Editor editor = mPrefs.edit();
editor.putBoolean(welcomeScreenShownPref, true);
editor.commit(); // Very important to save the preference
}
}
答案 1 :(得分:23)
在完成欢迎屏幕后,启动应用程序时,在首选项中保存一个标志。在显示欢迎屏幕之前检查此标志。如果该标志存在(换句话说,如果它不是第一次),则不要显示它。
答案 2 :(得分:2)
我用这个创建了一个SplashScreen:
package com.olidroide; import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; public class SplashScreen extends Activity{ /** Called when the activity is first created. */ public ProgressDialog myDialog; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splashscreen); new Handler().postDelayed(new Runnable() { public void run() { myDialog = ProgressDialog.show(SplashScreen.this,"", "Loading", true); Intent intent=new Intent(SplashScreen.this,OtherActivity.class); SplashScreen.this.startActivity(intent); myDialog.dismiss(); SplashScreen.this.finish(); } }, 3000);// 3 Seconds } };