方法 1、2 つのアクティビティ
コアコード:
パッケージghj1976.HelloWorld; android.app.Activityをインポートします。 android.content.Intentをインポートします。 android.os.Bundleをインポートします。 android.os.Handlerをインポートします。public class SplashActivity extends Activity { private Final int SPLASH_DISPLAY_LENGHT = 8000; // 延長8秒 @Override protected void onCreate(Bundle SavedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.splash); new Handler().postDelayed( new Runnable() { public void run() { インテント mainIntent = new Intent(SplashActivity. this , HelloWorldActivity. class ); スプラッシュアクティビティ。この.startActivity(mainIntent); スプラッシュアクティビティ。この.finish(); } }、SPLASH_DISPLAY_LENGHT); } }
例証します:
Handler().postDelayed は、指定された時間の実行を遅延します。
Handler クラスは主に次の 3 つのメソッドを使用して Runnable オブジェクトの実行時間を設定できます。
// Runnable オブジェクトをすぐに実行する public Final boolean post(Runnable r); // 指定した時刻 (uptimeMillis) に Runnable オブジェクトを実行する public Final boolean postAtTime(Runnable r, long uptimeMillis); // 指定した時間間隔で実行 ( lateMillis) Runnable オブジェクト public Final boolean postDelayed(Runnable r, long lateMillis);
Handler クラスの詳細については、次の記事を参照してください: http://book.51cto.com/art/201006/207064.htm
次の 2 行のコードは、新しいアクティビティを開始し、同時に現在のアクティビティを閉じます。
SplashActivity.this.startActivity(mainIntent);
SplashActivity.this.finish();
終了メソッドの解释例下: http://android.tolib.net/reference/android/app/Activity.html
アクティビティが完了し、閉じる必要があるときにこれを呼び出します。ActivityResult は、onActivityResult() を介して起動した人に伝播されます。
画像の出典: http://www.ibm.com/developerworks/cn/opensource/os-cn-android-actvt/
上で示したように、Android プログラマはアクティビティの「存続」を決定できますが、「死」は決定できません。つまり、プログラマはアクティビティを開始できますが、アクティビティを手動で「終了」することはできません。
Activity.finish() メソッドを呼び出すと、結果はユーザーが BACK キーを押したときと同じになります。つまり、Activity インスタンスが作業を完了し、「リサイクル」できることがアクティビティ マネージャーに通知されます。
次に、アクティビティ マネージャーはスタックの 2 番目の層でアクティビティをアクティブにして再スタックし、同時に元のアクティビティをスタックの 2 番目の層にプッシュして、アクティブ状態から一時停止状態に変更します。
たとえば、上記の例では、HelloWorldActivity が SplashActivity から開始された場合、HelloWorldActivity が現在スタックの最上位にあり、2 番目の層は SplashActivity になります。
SplashActivity.finish() メソッドを呼び出すと (SplashActivity の SplashActivity.this.finish() を通じて呼び出します)、SplashActivity はアクティブ状態から停止状態に遷移し、システムによってスタックから削除され、フラグは「リサイクル」される。
アクティビティの状態とスタック内の位置の関係は次のとおりです。
上の例は次のとおりです
Activity2 は Activity1 から開始され、Activity2 は現在スタックの最上位にあり、2 番目の層は Activity1 です。Activity2 で Activity2.finish() メソッドを呼び出すと、Activity Manager は Activity1 を再アクティブ化してスタックに置き、Activity2 を再アクティブ化します。アクティブ状態から停止状態に遷移し、Activity2 が「リサイクル」できることをマークします。Activity1.onActivityResult(int requestCode, int resultCode, Intent data) メソッドが実行され、Activity2 から返されたデータが data パラメーターを通じて Activity1 に返されます。
方法 2: アクティビティ
レイアウトファイル:
1.0" エンコーディング = utf-8 "?> http://schemas.android.com/apk/res/android" android:orientation=" vertical " android:layout_width=" fill_parent " android:layout_height=" fill_parent "> @ +id/splashscreen" android:orientation=" vertical " android:layout_width=" fill_parent " android:layout_height=" fill_parent "> @+id/info" android:layout_width=" fill_parent " android:layout_height=" Wrap_content " android:gravity =センター" android:paddingTop=" 10px " android:text="これはスプラッシュです! " /> fill_parent" android:paddingTop=" 10px " android:layout_height=" Wrap_content " android:text="これはコンテキストです" />
例証します:
これは、スプラッシュスクリーンという ID を持つ LinearLayout です。これは、プログラムの起動時に表示される部分です。起動が完了すると非表示になります。
コアコード:
パッケージghj1976.AndroidTest; android.app.Activityをインポートします。 android.os.Bundleをインポートします。 android.os.Handlerをインポートします。 android.os.Messageをインポートします。 android.os.SystemClock をインポートします。android.view.Viewをインポートします。 android.view.Windowをインポートします。 android.widget.LinearLayout をインポートします。android.widget.TextViewをインポートします。public class MainActivity extends Activity { private LinearLayout スプラッシュ; プライベートTextView テレビ。プライベート静的最終整数 ストップスプラッシュ = 0; // ミリ秒単位の時間 private static Final long SPLASHTIME = 1000; private Handler splashHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case STOPSPLASH: SystemClock.sleep(4000); スプラッシュ.setVisibility(View.GONE); 休憩; super .handleMessage (msg); } }; @Override public void onCreate(Bundle SavedInstanceState) { super .onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.main); スプラッシュ = (LinearLayout) findViewById(R.id.splashscreen); tv = (TextView) findViewById(R.id.info); tv.setText("正在建立データ连接続"); メッセージ msg =新しいメッセージ(); msg.what = ストップスプラッシュ; スプラッシュハンドラー.sendMessageDelayed(msg, SPLASHTIME); } }
説明する
アプリケーションの起動後にメッセージを送信して指定した領域を非表示に設定し、splash.setVisibility(View.GONE); によって起動インターフェイスを実現します。