如何在Android中使用计时器显示启动画面?

5
请问如何使用计时器在安卓上展示启动画面?我已经能够使用线程展示,但是线程并不是最好的选择。请告诉我处理这个问题的最佳方式。 使用线程的代码示例如下:

package com.example.splash_test;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;

public class MainActivity extends Activity {
    protected int _splashTime = 5000; 

    private Thread splashTread;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

         splashTread = new Thread() {
             @Override
             public void run() {
                 try {                       
                     synchronized(this){
                             wait(_splashTime);
                     }

                 } catch(InterruptedException e) {} 
                 finally {
                     finish();

                     Intent i = new Intent();
                     i.setClass(MainActivity.this, SecondActivity.class);
                             startActivity(i);

                     //stop();
                 }
             }
         };

         splashTread.start();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}
5个回答

5
这段代码非常有助于设计简短的计时器。尝试一下...
new Timer().schedule(new TimerTask() {          
    @Override
    public void run() {
        startActivity(new Intent(getApplicationContext(), MainActivity.class));
    }
}, 5000);

在5秒后,我将启动MainActivity。只需将此代码放入您的闪屏活动的onCreate()中即可。


1
out_marginLeft="50dp"
            android:layout_marginTop="50dp"
            android:layout_marginRight="50dp"
            android:gravity="center"
            android:orientation="vertical">

            <ProgressBar
                android:id="@+id/progressBar"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_above="@+id/txtProgress"
                android:layout_centerHorizontal="true"
                android:layout_marginLeft="16dp"
                android:layout_marginRight="16dp"
                android:progress="50"
                android:progressTint="@android:color/black" />

            <TextView
                android:id="@+id/txtProgress"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:text="Progress"
                android:textColor="@android:color/black" />
        </LinearLayout>  

Java

1
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.Window;

public class SplashScreen extends Activity {

protected int _splashTime = 2000;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.splash);

    int secondsDelayed = 1;
    new Handler().postDelayed(new Runnable() {
        public void run() {
            startActivity(new Intent(SplashScreen.this,
                    SecondActivity.class));
            finish();
        }
    }, secondsDelayed * 1000);
}

}

你是否在寻找类似这样的代码 Timer sTimer = new Timer();sTimer.schedule(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { public void run() { startActivity(new Intent(SplashScreen.this, AppMainActivity.class)); finish(); } }); } }, 2000); // 每2秒更新一次 - Md. Monsur Hossain Tonmoy

0

使用 Kotlin

Timer().schedule(object : TimerTask() {
        override fun run() {
            startActivity(Intent(applicationContext, MainActivity::class.java))
        }
    }, 3000)

0

你也可以在 onCreate 中插入:

SystemClock.sleep(TimeUnit.SECONDS.toMillis(3));

附言:请查看这个启动屏幕的实现link


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接