web-dev-qa-db-ja.com

Androidアプリケーションの開始時にロード画面を追加します

私のアプリは10秒でスタートページを読み込んでいます。その10秒の間にAndroid画面は空白です。その時間に読み込み画面を追加します。それを追加する方法は?アプリで開始ページが読み込まれていることを知る方法を教えてください。そして、私のアプリで行う方法を教えてください?

19
Anil M H

次のように、最初の読み込みアクティビティでスプラッシュスクリーンを使用できます。

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        Thread welcomeThread = new Thread() {

            @Override
            public void run() {
                try {
                    super.run();
                    sleep(10000);  //Delay of 10 seconds
                } catch (Exception e) {

                } finally {

                    Intent i = new Intent(SplashActivity.this,
                            MainActivity.class);
                    startActivity(i);
                    finish();
                }
            }
        };
        welcomeThread.start();
    }

このコードがお役に立てば幸いです。

28
MysticMagicϡ

progressDialogを使用します。

ProgressDialog dialog=new ProgressDialog(context);
dialog.setMessage("message");
dialog.setCancelable(false);
dialog.setInverseBackgroundForced(false);
dialog.show();

uIでデータを準備するたびに非表示にします。呼び出し:

dialog.hide();
38
Brijesh Thakur

この記事をお読みください

クリス・スチュワートはそこに書いた:

スプラッシュスクリーンは時間を無駄にするだけですよね? Android開発者として、スプラッシュスクリーンが表示されると、貧しい開発者がコードに3秒の遅延を追加しなければならなかったことを知っています。

次に、アプリを使用できるようになるまで、3秒間画像を見つめなければなりません。そして、私はそれが発売されるたびにこれをしなければなりません。どのアプリを開いたか知っています。私はそれが何をするか知っています。使用させてください!

スプラッシュスクリーンの正しい方法

Googleはそれ自体と矛盾していないと思います。古いアドバイスと新しいアドバイスが一緒になります。 (とはいえ、ユーザーの時間を無駄にするスプラッシュスクリーンを使用することは、まだ良い考えではありません。そうしないでください。)

ただし、Androidアプリは、特にコールドスタートの場合、起動にある程度の時間がかかります。回避できない可能性がある遅延があります。今回は、ユーザーに何か良いものを見せてみませんか?これは、Googleが提唱しているアプローチです。ユーザーの時間を無駄にしないでください。

Googleアプリの最近の更新を見ると、スプラッシュスクリーンの適切な使用方法がわかります。たとえば、YouTubeアプリをご覧ください。

enter image description here

17
yathavan

スプラッシュ画面の代わりに、カスタムのロード画面を作成できます。 10秒間スプラッシュスクリーンを表示する場合、ユーザーエクスペリエンスにとっては得策ではありません。そのため、カスタムの読み込み画面を追加することをお勧めします。カスタム読み込み画面の場合、gifのように感じるためにいくつかの異なる画像が必要になる場合があります。その後、resフォルダーに画像を追加し、次のようなクラスを作成します:-

public class LoadingScreen {private ImageView loading;

LoadingScreen(ImageView loading) {
    this.loading = loading;
}

public void setLoadScreen(){
    final Integer[] loadingImages = {R.mipmap.loading_1, R.mipmap.loading_2, R.mipmap.loading_3, R.mipmap.loading_4};
    final Handler loadingHandler = new Handler();
    Runnable runnable = new Runnable() {
        int loadingImgIndex = 0;
        public void run() {
            loading.setImageResource(loadingImages[loadingImgIndex]);
            loadingImgIndex++;
            if (loadingImgIndex >= loadingImages.length)
                loadingImgIndex = 0;
            loadingHandler.postDelayed(this, 500);
        }
    };
    loadingHandler.postDelayed(runnable, 500);
}}

MainActivityでは、次のようにLoadingScreenクラスにaを渡すことができます。

private ImageView loadingImage;

Activity_mainにImageViewを追加することを忘れないでください。その後、次のようにLoadingScreenクラスを呼び出します。

LoadingScreen loadingscreen = new LoadingScreen(loadingImage);
loadingscreen.setLoadScreen();

これがお役に立てば幸いです

3
public class Splash extends Activity {

    private final int SPLASH_DISPLAY_LENGHT = 3000;            //set your time here......

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        new Handler().postDelayed(new Runnable(){
            @Override
            public void run() {
                /* Create an Intent that will start the Menu-Activity. */
                Intent mainIntent = new Intent(Splash.this,MainActivity.class);
                Splash.this.startActivity(mainIntent);
                Splash.this.finish();
            }
        }, SPLASH_DISPLAY_LENGHT);
    }
}
1
Dhaval Patel

アプリケーションがその10秒間に何もしていない場合、ユーザーが何もせずに10秒間待機するだけの悪い設計になります。

その中で何かが起こっている場合、または10秒の遅延スプラッシュスクリーンを実装したい場合は、ここにコードがあります:

ProgressDialog pd;
pd = ProgressDialog.show(this,"Please Wait...", "Loading Application..", false, true);
pd.setCanceledOnTouchOutside(false);
Thread t = new Thread()
{ 
      @Override
      public void run()
      {
                try
                {
                    sleep(10000)  //Delay of 10 seconds
                } 
        catch (Exception e) {}
        handler.sendEmptyMessage(0);
        }
} ;
t.start();

//Handles the thread result of the Backup being executed.
private Handler handler = new Handler()
{
    @Override
    public void handleMessage(Message msg) 
    {
        pd.dismiss();
        //Start the Next Activity here...

    }
};
1
Vedang Jadhav

コードを書く:

  @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        Thread welcomeThread = new Thread() {

            @Override
            public void run() {
                try {
                    super.run();
                    sleep(10000)  //Delay of 10 seconds
                } catch (Exception e) {

                } finally {

                    Intent i = new Intent(SplashActivity.this,
                            MainActivity.class);
                    startActivity(i);
                    finish();
                }
            }
        };
        welcomeThread.start();
    }
0
Rudra