Как добавить текст на экран Android Splash? [Дубликат]

Итерируйте по коллекции, выбрав все элементы, которые вы хотите удалить, и поместите их во временную коллекцию. После завершения итерации удалите все найденные элементы из исходной коллекции, используя метод removeAll.

Будет ли это работать для вас? Я имею в виду, не уверен, что логика удаления сложнее, чем в вашем алгоритме.

429
задан Kevin Panko 18 March 2015 в 20:02
поделиться

30 ответов

Дальнейшее чтение:

Старый ответ:

КАК: Простой экран заставки

В этом ответе вы покажете, как отображать заставку в течение фиксированного времени, когда запускается приложение например, брендинга. Например. вы можете выбрать отображение заставки в течение 3 секунд. Однако, если вы хотите показать экран сшивки в течение переменного промежутка времени (например, время запуска приложения), вы должны проверить ответ Абдуллы https://stackoverflow.com/a/15832037/401025 . Однако имейте в виду, что запуск приложения может быть очень быстрым на новых устройствах, так что пользователь просто увидит флэш-память, которая является плохим UX.

Сначала вам нужно определить spash-экран в вашем файле layout.xml

  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical" android:layout_width="fill_parent"
          android:layout_height="fill_parent">

          <ImageView android:id="@+id/splashscreen" android:layout_width="wrap_content"
                  android:layout_height="fill_parent"
                  android:src="@drawable/splash"
                  android:layout_gravity="center"/>

          <TextView android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="Hello World, splash"/>

  </LinearLayout>

И ваша деятельность:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;

public class Splash extends Activity {

    /** Duration of wait **/
    private final int SPLASH_DISPLAY_LENGTH = 1000;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.splashscreen);

        /* New Handler to start the Menu-Activity 
         * and close this Splash-Screen after some seconds.*/
        new Handler().postDelayed(new Runnable(){
            @Override
            public void run() {
                /* Create an Intent that will start the Menu-Activity. */
                Intent mainIntent = new Intent(Splash.this,Menu.class);
                Splash.this.startActivity(mainIntent);
                Splash.this.finish();
            }
        }, SPLASH_DISPLAY_LENGTH);
    }
}

Thats all;)

426
ответ дан Lost in OWL 15 August 2018 в 21:39
поделиться
  • 1
    @ user2606414, пожалуйста, создайте вопрос о SO для вашей проблемы, вставьте весь журнал ошибок. – Lost in OWL 2 September 2013 в 09:32
  • 2
    Не забудьте добавить всплеск в манифест – Nepster 5 August 2014 в 13:27
  • 3
    @Peter вопрос заключается не в том, как показать заставку при загрузке данных. – Lost in OWL 19 September 2014 в 13:30
  • 4
    Это не является правильным решением для экрана заставки, поэтому пользователь ждет показ заставки, однако цель заставки - наоборот. Он должен показывать заставку во время ожидания пользователя. Пожалуйста, см. Решение @ Абдуллы. – efeyc 29 July 2015 в 09:20
  • 5
    Вместо того, чтобы останавливать приложение для времени SPLASH_DISPLAY_LENGTH. Вы должны сделать это вместо этого: bignerdranch.com/blog/splash-screens-the-right-way – miguel.martin 23 January 2016 в 08:28

вы не будете использовать файл макета. Вместо этого укажите фон вашего заставки в качестве фона темы мероприятия. Для этого сначала создайте XML-чертеж в res / drawable.

Примечание: доступен весь код ниже GitHub Link

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:drawable="@color/gray"/>

    <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/ic_launcher"/>
    </item>

</layer-list>

Здесь I Вы установили фоновый цвет и изображение.

Затем вы установите это как фоновый фон вашей всплеска в теме. Перейдите к файлу styles.xml и добавьте новую тему для вашей активности всплеска:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowBackground">@drawable/background_splash</item>
    </style>

</resources>

В новом SplashTheme установите атрибут фона фона для вашего XML-чертежа. Настройте это как тему своей активности всплеска в вашем AndroidManifest.xml:

<activity
    android:name=".SplashActivity"
    android:theme="@style/SplashTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Наконец, ваш класс SplashActivity должен просто перенаправлять вас на ваш основной вид деятельности:

public class SplashActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        finish();
    }
}

Обратите внимание, что вы даже не создали представление для этого SplashActivity. Взгляд исходит из темы. Когда вы настраиваете пользовательский интерфейс для своей активности всплеска в теме, он доступен сразу.

Если у вас был файл макета для вашей активности всплеска, этот файл макета будет отображаться для пользователя только после вашего приложение полностью инициализировано, что слишком поздно. Вы хотите, чтобы всплеск отображался только за это небольшое количество времени до того, как приложение будет инициализировано.

3
ответ дан Abhi Soni 15 August 2018 в 21:39
поделиться

Его очень просто в android, мы просто используем концепцию обработчика для реализации заставки

. В вашем java-файле SplashScreenActivity вставьте этот код.

В вашем файле SplashScreenActivity xml помещается любое изображение с использованием изображения.

public void LoadScreen() {
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {                 
                Intent i = new Intent(SplashScreenActivity.this, AgilanbuGameOptionsActivity.class);
                startActivity(i);
            }
        }, 2000);
    }
0
ответ дан Agilanbu 15 August 2018 в 21:39
поделиться
     - Add in SplashActivity 

   public class SplashActivity extends Activity {

       private ProgressBar progressBar;
       int i=0;
       Context context;
       private GoogleApiClient googleApiClient;

       @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_splash);
           context = this;

           new Handler().postDelayed(new Runnable() {
               @Override
               public void run() {
                   startActivity(new Intent(Splash.this, LoginActivity.class));
                   finish();
               }
           }, 2000);

       }

   }

  - Add in activity_splash.xml

   <RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:tools="http://schemas.android.com/tools"
       xmlns:custom="http://schemas.android.com/apk/res-auto"
       android:background="@color/colorAccent"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       tools:context=".Splash">

       <ImageView
           android:id="@+id/ivLogo"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:src="@mipmap/icon_splash"
           android:layout_centerHorizontal="true"
           android:layout_centerVertical="true"/>


       <ProgressBar
           android:id="@+id/circle_progress"
           style="?android:attr/progressBarStyleHorizontal"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:layout_alignParentBottom="true"
           android:layout_marginBottom="5dp"
           android:max="100"
           android:progressTint="@color/green"
           android:visibility="visible" />

   </RelativeLayout>

  - Add in AndroidManifest.xml

    <activity android:name="ex.com.SplashActivity">
               <intent-filter>
                   <action android:name="android.intent.action.MAIN" />

                   <category android:name="android.intent.category.LAUNCHER" />
               </intent-filter>
           </activity>
1
ответ дан Ashish Kumar 15 August 2018 в 21:39
поделиться
  • 1
    Не могли бы вы также добавить некоторые объяснения? – Robert 23 February 2018 в 13:37
  • 2
    Да, конечно ... какое объяснение вы хотите, дайте мне знать, пожалуйста. – Ashish Kumar 23 February 2018 в 13:43
  • 3
    Хороший Ashish ... Это будет очень полезно для свежего .... – Chinki Sai 23 February 2018 в 13:44

Это полный код здесь

SplashActivity.java

public class SplashActivity extends AppCompatActivity {

private final int SPLASH_DISPLAY_DURATION = 1000;

@Override
public void onCreate(Bundle bundle) {
    super.onCreate(bundle);


    new Handler().postDelayed(new Runnable(){
        @Override
        public void run() {

            Intent mainIntent = new Intent(SplashActivity.this,MainActivity.class);
            SplashActivity.this.startActivity(mainIntent);
            SplashActivity.this.finish();
        }
    }, SPLASH_DISPLAY_DURATION);
}}

В drawables создайте этот bg_splash.xml

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item
    android:drawable="@color/app_color"/>

<item>
    <bitmap
        android:gravity="center"
        android:src="@drawable/ic_in_app_logo_big"/>
</item></layer-list>

В styles.xml создайте пользовательскую тему

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowBackground">@drawable/bg_splash</item>
</style>

и, наконец, в AndroidManifest.xml укажите тему своей активности

<activity
        android:name=".activities.SplashActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:theme="@style/SplashTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Приветствия.

4
ответ дан awsleiman 15 August 2018 в 21:39
поделиться

В моем случае я не хотел создавать новую активность только для показа изображения в течение 2 секунд. При запуске моего MainAvtivity изображения загружаются в держатели с использованием picasso, я знаю, что для загрузки требуется около 1 секунды, поэтому я решил сделать следующее внутри моей MainActivity OnCreate:

splashImage = (ImageView) findViewById(R.id.spllll);

    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

    int secondsDelayed = 1;
    new Handler().postDelayed(new Runnable() {
        public void run() {
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
            splashImage.setVisibility(View.GONE);

        }
    }, secondsDelayed * 2000);

Когда при запуске приложения первое, что происходит, отображается ImageView, а статусBar удаляется установкой флажков окна на полный экран. Затем я использовал Handler для запуска в течение 2 секунд, после 2 секунд я очищаю флаги полного экрана и устанавливаю видимость ImageView на GONE. Легко, просто, эффективно.

0
ответ дан ClassA 15 August 2018 в 21:39
поделиться
  • Создайте действие: Splash
  • Создайте XML-файл макета: splash.xml
  • Поместите компоненты пользовательского интерфейса в макет splash.xml, чтобы он выглядел так, как вы хотите
  • ваш Splash.java может выглядеть так:
    public class Splash extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.splash);
    
            int secondsDelayed = 1;
            new Handler().postDelayed(new Runnable() {
                    public void run() {
                            startActivity(new Intent(Splash.this, ActivityB.class));
                            finish();
                    }
            }, secondsDelayed * 1000);
        }
    }
    
  • изменить ActivityB.class на то, какую активность вы хотите запустить после заставки
  • проверить свой манифест файл и он должен выглядеть как
        <activity
            android:name=".HomeScreen"
            android:label="@string/app_name">     
        </activity>

        <activity
            android:name=".Splash"
            android:label="@string/title_activity_splash_screen">     
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
48
ответ дан coffeemakr 15 August 2018 в 21:39
поделиться
  • 1
    ya это поможет вам .. +1 хороший ответ – Ganapathy C 30 March 2011 в 14:31
  • 2
    Это не цель заставки экрана. Это делает дополнительную задержку в 1 секунду. Заставка должна быть изображением при загрузке первого экрана приложения. Эта ссылка может помочь. stackoverflow.com/a/7057332/869451 – efeyc 27 December 2011 в 14:18
  • 3
    @efeyc: вы на 100% прав .. все же, это выглядит довольно хорошо, когда приложение запускается .. не так ли? – Suda.nese 14 November 2013 в 15:34
  • 4
    @ Suda.nese определенно нет. Пользователи не хотят смотреть на картинку, пользователи хотят использовать приложение и не иметь ненужной задержки – Tim Castelijns 8 October 2015 в 13:05
  • 5
    Согласовано @ Suda.nese Если требования к приложению включают в себя заставку, чем экран заставки! Конечно, это может быть нежелательно для пользователей, но если клиенту нужен заставку, тогда, пожалуйста, дайте им их – binnyb 9 October 2015 в 15:16

Хотя есть хорошие ответы, я покажу рекомендуемый google путь:

1) Сначала создайте Theme для заставки: у вас есть тема под названием splashscreenTheme, ваша тема запуска будет :

<style name="splashscreenTheme">
  <item name="android:windowBackground">@drawable/launch_screen</item>
</style>

Примечание:

android:windowBackground уже устанавливает, что ваше изображение с заставкой не нужно делать это в интерфейсе пользователя.

вы также можете использовать цвет здесь

2) Установите тему для проявления splashscreenActivity

   <activity
            android:name=".activity.splashscreenActivity"
            android:screenOrientation="portrait"
            android:theme="@style/splashscreenTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

3) убедитесь, что вы запускаете [screen screen] drawable не в папке drawable, если ваше изображение

Это приведет к ускорению запуска экрана запуска и спасению вас от черного экрана

Он также избегает дополнительного превышения

1
ответ дан Cold Fire 15 August 2018 в 21:39
поделиться

Создайте Activity, давайте действовать с именем «A», затем создадим xml-файл с именем myscreen.xml, в котором задано изображение заставки в качестве фона, а затем используйте таймер обратного отсчета для перехода от одной Activitity к другой. Чтобы узнать, как использовать таймер Count Down, см. Мой ответ в этом вопросе TimerTask в Android?

2
ответ дан Community 15 August 2018 в 21:39
поделиться

Заставки не должны загружаться из файла макета, все равно может быть некоторое отставание при загрузке.

Лучший способ - создать тему только для вашей SplashScreenActivity и установить the android:windowBackground на

https://www.bignerdranch.com/blog/splash-screens-the-right-way/

В двух словах:

Объявите свой SplashScreenActivity в манифесте:

<activity
        android:name=".activities.SplashScreenActivity"
        android:theme="@style/SplashTheme"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

В вашем SplashScreenActivity.java:

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent intent = new Intent(this, MainActivity_.class);
    startActivity(intent);
    finish();

}

Затем создайте источник для фонового окна вашего тема:

<style name="SplashTheme" parent="Theme.Bumpfie.Base">
    <item name="android:windowBackground">@drawable/splash</item>
</style>

Drawable file splash.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white"/>
    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/app_logo"/>
    </item>
</layer-list>
4
ответ дан Danny Yassine 15 August 2018 в 21:39
поделиться

После Android Marshmallow другое полезное использование экрана Splash, о котором я придумываю, запрашивает необходимый Android Permissions в заставке вашего приложения.

похоже, что большинство приложений обрабатывают запрос разрешения таким образом.

  • Диалоги делают плохой UIX, и они ломают основной поток и заставляют вас определять время выполнения, а правда - большинство пользователей могут даже не волнует, если ваше приложение хочет что-то написать на SD-карте. Некоторые из них, возможно, даже не понимают, что мы пытаемся передать, пока мы не переведем его на простом английском языке.
  • Запрос разрешений в одно время делает меньше числа «если есть» перед каждой операцией и делает ваш код искаженным

Это пример того, как вы можете запрашивать разрешения в вашей активности всплеска для устройства под управлением ОС Android 23+.

Если все разрешения предоставлены ИЛИ уже предоставлены ИЛИ приложение работает на Pre Marshmallow THEN, просто перейдите и отобразите основное содержимое с небольшой задержкой в ​​полсекунды, чтобы пользователь мог оценить усилие, которое мы поставили при чтении этого вопроса и попытке чтобы приложить все усилия.

import android.Manifest;
import android.annotation.TargetApi;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;

import com.c2h5oh.beer.R;
import com.c2h5oh.beer.utils.Animatrix;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class SplashActivity extends AppCompatActivity {

    final private int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS = 124;

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

        //show animations 
        Animatrix.scale(findViewById(R.id.title_play), 100);
        Animatrix.scale(findViewById(R.id.title_edit), 100);
        Animatrix.scale(findViewById(R.id.title_record), 100);
        Animatrix.scale(findViewById(R.id.title_share), 100);

        if (Build.VERSION.SDK_INT >= 23) {

            // Marshmallow+ Permission APIs
            fuckMarshMallow();

        } else {

            // Pre-Marshmallow
            ///Display main contents
            displaySplashScreen();
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        switch (requestCode) {
            case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS: {
                Map<String, Integer> perms = new HashMap<String, Integer>();
                // Initial
                perms.put(Manifest.permission.READ_EXTERNAL_STORAGE, PackageManager.PERMISSION_GRANTED);
                perms.put(Manifest.permission.RECORD_AUDIO, PackageManager.PERMISSION_GRANTED);
                perms.put(Manifest.permission.MODIFY_AUDIO_SETTINGS, PackageManager.PERMISSION_GRANTED);
                perms.put(Manifest.permission.VIBRATE, PackageManager.PERMISSION_GRANTED);
                // Fill with results
                for (int i = 0; i < permissions.length; i++)
                    perms.put(permissions[i], grantResults[i]);

                // Check for ACCESS_FINE_LOCATION
                if (perms.get(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
                        && perms.get(Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED
                        && perms.get(Manifest.permission.MODIFY_AUDIO_SETTINGS) == PackageManager.PERMISSION_GRANTED
                        && perms.get(Manifest.permission.VIBRATE) == PackageManager.PERMISSION_GRANTED) {
                    // All Permissions Granted

                    // Permission Denied
                    Toast.makeText(SplashActivity.this, "All Permission GRANTED !! Thank You :)", Toast.LENGTH_SHORT)
                            .show();

                    displaySplashScreen();

                } else {
                    // Permission Denied
                    Toast.makeText(SplashActivity.this, "One or More Permissions are DENIED Exiting App :(", Toast.LENGTH_SHORT)
                            .show();

                    finish();
                }
            }
            break;
            default:
                super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }


    @TargetApi(Build.VERSION_CODES.M)
    private void fuckMarshMallow() {
        List<String> permissionsNeeded = new ArrayList<String>();

        final List<String> permissionsList = new ArrayList<String>();
        if (!addPermission(permissionsList, Manifest.permission.READ_EXTERNAL_STORAGE))
            permissionsNeeded.add("Read SD Card");
        if (!addPermission(permissionsList, Manifest.permission.RECORD_AUDIO))
            permissionsNeeded.add("Record Audio");
        if (!addPermission(permissionsList, Manifest.permission.MODIFY_AUDIO_SETTINGS))
            permissionsNeeded.add("Equilizer");
        if (!addPermission(permissionsList, Manifest.permission.VIBRATE))
            permissionsNeeded.add("Vibrate");

        if (permissionsList.size() > 0) {
            if (permissionsNeeded.size() > 0) {

                // Need Rationale
                String message = "App need access to " + permissionsNeeded.get(0);

                for (int i = 1; i < permissionsNeeded.size(); i++)
                    message = message + ", " + permissionsNeeded.get(i);

                showMessageOKCancel(message,
                        new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
                                        REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
                            }
                        });
                return;
            }
            requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
                    REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
            return;
        }

        Toast.makeText(SplashActivity.this, "No new Permission Required- Launching App .You are Awesome!!", Toast.LENGTH_SHORT)
                .show();

        displaySplashScreen();
    }


    private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) {
        new AlertDialog.Builder(SplashActivity.this)
                .setMessage(message)
                .setPositiveButton("OK", okListener)
                .setNegativeButton("Cancel", null)
                .create()
                .show();
    }

    @TargetApi(Build.VERSION_CODES.M)
    private boolean addPermission(List<String> permissionsList, String permission) {

        if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
            permissionsList.add(permission);
            // Check for Rationale Option
            if (!shouldShowRequestPermissionRationale(permission))
                return false;
        }
        return true;
    }

    /**
     * Display main content with little delay just so that user can see
     * efforts I put to make this page
     */
    private void displaySplashScreen() {
        new Handler().postDelayed(new Runnable() {

        /*
         * Showing splash screen with a timer. This will be useful when you
         * want to show case your app logo / company
         */

            @Override
            public void run() {
                startActivity(new Intent(SplashActivity.this, AudioPlayerActivity.class));
                finish();
            }
        }, 500);
    }


}
4
ответ дан Hitesh Sahu 15 August 2018 в 21:39
поделиться

Как насчет сверхгибкого экрана запуска, который может использовать тот же код и определен в AndroidManifest.xml, поэтому код никогда не понадобится изменять. Я вообще-то разрабатываю библиотеки кода и не люблю настраивать код, потому что он неаккуратный.

<activity
        android:name=".SplashActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <meta-data android:name="launch_class" android:value="com.mypackage.MyFirstActivity" />
        <meta-data android:name="duration" android:value="5000" />
</activity>

Затем сам SpashActivity ищет метаданные для «launch_class», чтобы затем сделать сам Intent. «Длительность» метаданных определяет, как долго экран заставки будет оставаться.

public class SplashActivity extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.activity_splash);

    ComponentName componentName = new ComponentName(this, this.getClass());

    try {
        Bundle bundle = null;
        bundle = getPackageManager().getActivityInfo(componentName, PackageManager.GET_META_DATA).metaData;
        String launch_class = bundle.getString("launch_class");
        //default of 2 seconds, otherwise defined in manifest
        int duration = bundle.getInt("duration", 2000);

        if(launch_class != null) {
            try {
                final Class<?> c = Class.forName(launch_class);

                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        Intent intent = new Intent(SplashActivity.this, c);
                        startActivity(intent);
                        finish();
                    }
                }, duration);

            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
  }
}
1
ответ дан Joel Teply 15 August 2018 в 21:39
поделиться

Действительно легкий & amp; gr8:

Наслаждайтесь!

Здесь достаточно ответов, которые помогут в реализации. этот пост должен был помочь другим с первого шага создания экрана-заставки!

0
ответ дан jony89 15 August 2018 в 21:39
поделиться

Пример экрана заставки:

public class MainActivity extends Activity {
    private ImageView splashImageView;
    boolean splashloading = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        splashImageView = new ImageView(this);
        splashImageView.setScaleType(ScaleType.FIT_XY);
        splashImageView.setImageResource(R.drawable.ic_launcher);
        setContentView(splashImageView);
        splashloading = true;
        Handler h = new Handler();
        h.postDelayed(new Runnable() {
            public void run() {
                splashloading = false;
                setContentView(R.layout.activity_main);
            }

        }, 3000);

    }

}
2
ответ дан kablu 15 August 2018 в 21:39
поделиться

Прежде всего ответы действительно очень хорошие. Но есть проблема с утечкой памяти. Эта проблема часто известна в сообществе Android как «Утечка активности». Теперь, что именно это означает?

Когда происходит изменение конфигурации, например изменение ориентации, Android уничтожает Activity и воссоздает его. Обычно сборщик мусора просто очищает выделенную память от старого экземпляра Activity, и мы все хороши.

«Утечка активности» относится к ситуации, когда сборщик мусора не может очистить выделенную память старый экземпляр Activity, так как это being (strong) referenced из объекта, из которого жил экземпляр Activity. Каждое приложение для Android имеет определенный объем памяти, выделенный для него. Когда сборщик мусора не может освободить неиспользованную память, производительность приложения будет постепенно уменьшаться и, в конечном счете, сбой с ошибкой OutOfMemory.

Как определить, что приложение утечки памяти или нет? Самый быстрый способ - открыть вкладку «Память» в Android Studio и обратить внимание на выделенную память при изменении ориентации. Если выделенная память продолжает увеличиваться и никогда не уменьшается, тогда у вас есть утечка памяти.

1. Утечка памяти, когда пользователь меняет ориентацию.

Сначала вам нужно определить заставку в вашем ресурсе макета splashscreen.xml file

Пример кода для активности заставки.

public class Splash extends Activity {
 // 1. Create a static nested class that extends Runnable to start the main Activity
    private static class StartMainActivityRunnable implements Runnable {
        // 2. Make sure we keep the source Activity as a WeakReference (more on that later)
        private WeakReference mActivity;

        private StartMainActivityRunnable(Activity activity) {
         mActivity = new WeakReference(activity);
        }

        @Override
        public void run() {
         // 3. Check that the reference is valid and execute the code
            if (mActivity.get() != null) {
             Activity activity = mActivity.get();
             Intent mainIntent = new Intent(activity, MainActivity.class);
             activity.startActivity(mainIntent);
             activity.finish();
            }
        }
    }

    /** Duration of wait **/
    private final int SPLASH_DISPLAY_LENGTH = 1000;

    // 4. Declare the Handler as a member variable
    private Handler mHandler = new Handler();

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

        // 5. Pass a new instance of StartMainActivityRunnable with reference to 'this'.
        mHandler.postDelayed(new StartMainActivityRunnable(this), SPLASH_DISPLAY_LENGTH);
    }

    // 6. Override onDestroy()
    @Override
    public void onDestroy() {
     // 7. Remove any delayed Runnable(s) and prevent them from executing.
     mHandler.removeCallbacksAndMessages(null);

     // 8. Eagerly clear mHandler allocated memory
     mHandler = null;
    }
}

Для получения дополнительной информации перейдите по этой ссылке

11
ответ дан Machado 15 August 2018 в 21:39
поделиться

@ Ответ Абдуллы верен, однако Google опубликовал расширенное объяснение того, как правильно реализовать это, не изменяя тему вашей деятельности:

https://plus.google.com/+AndroidDevelopers / posts / Z1Wwainpjhd

Приложения, такие как Google Maps и YouTube, начали использовать тот же метод.

30
ответ дан Matih 15 August 2018 в 21:39
поделиться

Обратите внимание, что это решение не позволит пользователю подождать больше: задержка всплывающего экрана зависит от времени запуска приложения.

Когда вы открываете любое приложение для Android, по умолчанию вы получите какой черный экран с заголовком и значком приложения сверху, вы можете изменить это, используя стиль / тему.

Сначала создайте папку style.xml в значениях и добавьте к ней стиль.

<style name="splashScreenTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
    <item name="android:windowBackground">@drawable/splash_screen</item>
</style>

Вместо использования @android:style/Theme.DeviceDefault.Light.NoActionBar вы можете использовать любую другую тему в качестве родителя.

Во-вторых, в вашем приложении Manifest.xml добавьте android:theme="@style/splashScreenTheme" к вашему основному действию.

<activity
        android:name="MainActivity"
        android:label="@string/app_name"
        android:theme="@style/splashScreenTheme" >

В-третьих, обновите свою тему в своей активности onCreate ().

protected void onCreate(Bundle savedInstanceState) {
    // Make sure this is before calling super.onCreate
    setTheme(R.style.mainAppTheme);
    super.onCreate(savedInstanceState);
}

UPDATE Проверьте этот пост https://plus.google.com/ + AndroidDevelopers / posts / Z1Wwainpjhd Благодаря @ mat1h и @adelriosantiago

475
ответ дан Milen 15 August 2018 в 21:39
поделиться
  • 1
    да, вам нужно, так что качество png выглядит хорошо – Abdullah 18 May 2013 в 01:51
  • 2
    Кажется, что "родительский" поддерживается только в API 14 и выше – user1832478 29 March 2014 в 17:13
  • 3
    Это правильный способ сделать заставку. Благодаря! Ответ с большим количеством голосов с задержками - это просто плохая практика. Ничто не должно затягивать пользователя от просмотра первого функционального экрана. – dineth 24 October 2014 в 01:22
  • 4
    Одна из проблем, с которыми я столкнулась, заключается в том, что <item name="android:background"> будет отменять windowBackground. И без определения android:background мой фон в любых фрагментах будет прозрачным, показывая активность за основным содержимым. – William Grand 1 January 2015 в 21:47
  • 5
    @Abdullah: Я следовал так, как вы сказали. Он отлично работает, но заставка на экране появляется за несколько миллисекунд при переходе активности. – nizam.sp 11 October 2015 в 16:59
  1. Создать Activity SplashScreen.java
    public class SplashScreen extends Activity {
    protected boolean _active = true;
    protected int _splashTime = 3000; // time to display the splash screen in ms
    
    
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splashscreen);
    
        Thread splashTread = new Thread() {
            @Override
            public void run() {
                try {
                    int waited = 0;
                    while (_active && (waited < _splashTime)) {
                        sleep(100);
                        if (_active) {
                            waited += 100;
                        }
                    }
                } catch (Exception e) {
    
                } finally {
    
                    startActivity(new Intent(SplashScreen.this,
                            MainActivity.class));
                    finish();
                }
            };
                 };
        splashTread.start();
    }
     }
    
  2. splashscreen.xml будет таким, как
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="600px" android:layout_height="1024px"
      android:background="#FF0000">
    </RelativeLayout> 
    
13
ответ дан P Ravikant 15 August 2018 в 21:39
поделиться

Я использовал потоки, чтобы сделать Flash-экран в android.

    import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

public class HomeScreen extends AppCompatActivity{
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.screen_home);

        Thread thread = new Thread(){
            public void run(){
                try {
                    Thread.sleep(3 * 1000);
                    Intent i = new Intent(HomeScreen.this, MainActivity.class);
                    startActivity(i);
                } catch (InterruptedException e) {
                }
            }
        };
        thread.start();
    }
}
0
ответ дан Palak Jain 15 August 2018 в 21:39
поделиться

Когда-нибудь пользователь откройте SplashActivity и немедленно выйдите, но приложение по-прежнему переходит к MainActivity после SPLASH_SCREEN_DISPLAY_LENGTH.

Для предотвращения этого: в SplashActivity вы должны проверить, что SplashActivity завершение или нет до перехода на MainActivity

public class SplashActivity extends Activity {

    private final int SPLASH_SCREEN_DISPLAY_LENGTH = 2000;

    @Override
    public void onCreate(Bundle icicle) {
        ...
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {

                if (!isFinishing()) {//isFinishing(): If the activity is finishing, returns true; else returns false.
                    startActivity(new Intent(SplashActivity.this, MainActivity.class));
                    finish();
                }

            }, SPLASH_SCREEN_DISPLAY_LENGTH);
        }                             
   }                                
}

Надейтесь на эту помощь

1
ответ дан Phan Van Linh 15 August 2018 в 21:39
поделиться
public class SplashActivity extends Activity {

  Context ctx;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      ctx = this;
      setContentView(R.layout.activity_splash);

      Thread thread = new Thread(){
          public void run(){
              try {
                  sleep(3000);
              } catch (InterruptedException e) {
                  e.printStackTrace();
              }

              Intent in = new Intent(ctx,MainActivity.class);
              startActivity(in);
              finish();
          }
      };
      thread.start();
  }
}
0
ответ дан Rishabh Dixit 15 August 2018 в 21:39
поделиться
  • 1
    Это плохой пример: что произойдет, если вы выйдете из SplashActivity, нажав назад? Поток будет выполняться. – Mark Keen 24 April 2017 в 22:55

Splash Screnn по умолчанию не делает ваше приложение более профессиональным. Профессионально спроектированный Splash Screen имеет возможность сделать ваше приложение более профессиональным, но если вы не знаете, как его написать, то насколько профессиональным будет остальное ваше приложение на самом деле.

О единственной причине ( извините), чтобы иметь экран заставки, потому что вы делаете огромное количество вычислений или ожидаете запуска GPS / WiFi, потому что ваше приложение полагается на то, что до его запуска. Без результатов этих вычислений или доступа к GPS / WiFi (и т. Д.) Ваше приложение мертво в воде, поэтому вы чувствуете, что вам нужен экран всплеска, и ДОЛЖЕН блокировать просмотр экрана для любых других запущенных программ (включая фоновый ).

Такой экран заставки должен выглядеть как ваше полноэкранное приложение, чтобы создать впечатление, что оно уже инициализировано, а затем после завершения длительных вычислений могут быть заполнены окончательные детали (изображение изменено) , Вероятность того, что это так, или что это единственный способ разработки Программы, очень мала.

Лучше разрешить Пользователю (и остальной ОС) делать что-то еще в то время как они ждут, а не разрабатывают вашу Программу, чтобы зависеть от чего-то, что займет некоторое время (когда продолжительность ожидания не определена).

На вашем телефоне уже есть значки, которые говорят, что GPS / WiFi запускается. Время или пространство, занимаемое экраном всплеска, можно потратить на загрузку предварительных вычислений или фактически выполнение вычислений. См. Первую ссылку ниже для проблем, которые вы создаете, и что нужно учитывать.

Если вы абсолютно должны дождаться этих вычислений или GPS / WiFi, было бы лучше всего просто запустить приложение и получить всплывающее окно, который говорит, что нужно ждать расчетов (текстовое сообщение «Инициализация» в порядке). Ожидание GPS / WiFi ожидается (если они еще не были активированы в другой программе), поэтому анонсировать их время ожидания не нужно.

Помните, что когда заставка запускает вашу программу, на самом деле запущена, все, что вы делают это, задерживая использование вашей Программы и заставляя CPU / GPU делать что-то, что больше всего не ощущается.

Нам действительно хотелось бы подождать и увидеть ваш экран Splash каждый раз, когда мы запускаем вашу программу, или мы не будем чувствовать, что это очень профессионально написано. Создание экрана всплеска FULL и дублирования фактического экрана программы (поэтому мы думаем, что он инициализируется, когда на самом деле это не так) МОЖНО выполнить свою задачу (сделать вашу программу более профессиональным), но я бы не стал делать ставку на это.

Почему бы не сделать это: http://cyrilmottier.com/2012/05/03/splash-screens-are-evil-dont-use-them/

Как это сделать: https://encrypted.google.com/search?q=Android+splash+screen+source

Итак, есть хорошая причина не делать этого, но если вы уверены, что каким-то образом ваша ситуация выходит за рамки этих примеров, то средства для этого даются выше. Будьте уверены, что это действительно делает ваше приложение более профессиональным, или вы победили единственную причину, которую вы дали для этого.

Это похоже на канал YouTube, который запускает каждое видео с длинным графическим вводом (и Outro ) или чувствует необходимость рассказать анекдот или объяснить, что произошло на прошлой неделе (когда это не комедия или канал LifeStyles). Просто покажите шоу! (Просто запустите программу).

12
ответ дан Rob 15 August 2018 в 21:39
поделиться
public class MainActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Thread t=new Thread()
    {

        public void run()
        {   

            try {

                sleep(2000);
                finish();
                Intent cv=new Intent(MainActivity.this,HomeScreen.class/*otherclass*/);
                startActivity(cv);
            } 

            catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    };
    t.start();
}
3
ответ дан tkanzakic 15 August 2018 в 21:39
поделиться

Заставка - это немного непригодный для использования объект в Android: он не может быть загружен как можно скорее для скрытия задержки запуска основной активности. Для этого есть две причины: реклама и сетевые операции.

Выполнение в качестве диалога делает переход без зазора от экрана всплеска до основного пользовательского интерфейса активности.

public class SplashDialog extends Dialog {
    ImageView splashscreen;
    SplashLoader loader;
    int splashTime = 4000;

    public SplashDialog(Context context, int theme) {
        super(context, theme);
    }

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

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                cancel();
            }
        }, splashTime);

    }
}

Макет:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/white">

    <ImageView
        android:id="@+id/splashscreen"
        android:layout_width="190dp"
        android:layout_height="190dp"
        android:background="@drawable/whistle"
        android:layout_centerInParent="true" />

</RelativeLayout>

И запуск:

public class MyActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (getIntent().getCategories() != null &&  getIntent().getCategories().contains("android.intent.category.LAUNCHER")) {
            showSplashScreen();
        }
    }

    protected Dialog splashDialog;
    protected void showSplashScreen() {
        splashDialog = new SplashDialog(this, R.style.SplashScreen);
        splashDialog.show();
    }

    ...
}
2
ответ дан tse 15 August 2018 в 21:39
поделиться
  • 1
    Для этого подхода есть бенефициар, и вы можете напрямую запустить MainActivity. Например, когда вы используете push-уведомление в своем приложении, когда вы запускаете свое приложение, нажав на уведомление, таким образом вы сможете лучше управлять уведомлением. – Farnad Tohidkhah 22 August 2017 в 06:25

Другой подход достигается с помощью CountDownTimer

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

 new CountDownTimer(5000, 1000) { //5 seconds
      public void onTick(long millisUntilFinished) {
          mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
      }

     public void onFinish() {
          startActivity(new Intent(SplashActivity.this, MainActivity.class));
          finish();
     }

  }.start();
}
1
ответ дан ugur 15 August 2018 в 21:39
поделиться

Ответ Абдуллы велик. Но я хочу добавить к нему еще несколько подробностей с моим ответом.

Реализация экрана заставки

Реализация заставки экрана правильного пути немного отличается от того, что вы можете себе представить. Взгляд всплеска, который вы видите, должен быть готов немедленно, даже до того, как вы сможете раздуть файл макета в своей активности всплеска.

Таким образом, вы не будете использовать файл макета. Вместо этого укажите фон вашего заставки в качестве фона темы мероприятия. Для этого сначала создайте XML-чертеж в res / drawable.

background_splash.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:drawable="@color/gray"/>

    <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/ic_launcher"/>
    </item>

</layer-list>

Это просто список слоев с логотипом в центре фона с ним.

Теперь откройте styles.xml и добавьте этот стиль

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowBackground">@drawable/background_splash</item>
</style>

. Эта тема должна иметь панель действий и фон, который мы только что создали выше.

И в манифесте вам нужно для установки SplashTheme на активность, которую вы хотите использовать в качестве всплеска.

<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme">
<intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

Затем внутри вашего кода активности перейдите на конкретный экран после всплеска с использованием намерения.

public class SplashActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        finish();
    }
}

Это правильный способ сделать. Я использовал эти ссылки для ответа.

  1. https://material.google.com/patterns/launch-screens.html
  2. https://www.bignerdranch.com/blog/splash-screens-the-right-way/ Спасибо этим парням за то, что они меня толкали в правильном направлении. Я хочу помочь другим, потому что принятый ответ не рекомендуется делать заставки.
9
ответ дан Umar Ata 15 August 2018 в 21:39
поделиться
  • 1
    Я видел учебник по YouTube относительно этого. Но я думаю, что размер растрового изображения будет проблемой, поскольку вы не можете изменить его размер с помощью layer-list. – RoCk 5 April 2017 в 03:39

Остановка на экране Splash для 4's 5 без необходимости не имеет большого смысла. Это нормально, если вы загружаете что-то в фоновом режиме, следуйте этому подходу, чтобы реализовать заставку: - Внедрение заставки - это немного иначе, чем вы могли себе представить. Представление всплеска, которое вы видите, должно быть готово немедленно, даже до того, как вы сможете раздуть файл макета в своей активности всплеска.

Таким образом, вы не будете использовать файл макета. Вместо этого укажите фон вашего заставки в качестве фона темы мероприятия. Для этого сначала создайте XML-чертеж в res / drawable.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:drawable="@color/gray"/>

    <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/ic_launcher"/>
    </item>

</layer-list>

Здесь я установил цвет фона и изображение.

Затем вы будете установите это как фоновый фон вашей брызги в теме. Перейдите к файлу styles.xml и добавьте новую тему для вашей активности всплеска:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowBackground">@drawable/background_splash</item>
    </style>

</resources>

В новом SplashTheme установите атрибут фона фона для вашего XML-чертежа. Настройте это как тему своей активности всплеска в вашем AndroidManifest.xml:

<activity
    android:name=".SplashActivity"
    android:theme="@style/SplashTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Наконец, класс SplashActivity должен просто перенаправлять вас на ваш основной вид деятельности:

     public class SplashActivity extends AppCompatActivity {

             @Override
             protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);

               Intent intent = new Intent(this, MainActivity.class);
               startActivity(intent);
               finish();
    }
}

Подробнее читайте это: 1. https://www.bignerdranch.com/blog/splash-screens-the-right-way/ 2. http://blog.goodbarber.com/3- советы к Create-A-great-заставку-для-вашего-подвижной app_a287.html

1
ответ дан vicky 15 August 2018 в 21:39
поделиться

Это лучший пост, который я видел на экранах заставки: http://saulmm.github.io/avoding-android-cold-starts

Saúl Molinero идет в двух разных вариантах для заставки: использование фона окна для анимации на вашем первом экране и отображение пользовательского интерфейса (который является популярным выбором, который Google использует для большинства своих приложений в наши дни).

I обратитесь к этому сообщению каждый раз, когда мне нужно рассмотреть время холодного запуска и избежать отказа пользователя из-за длительного времени запуска.

Надеюсь, что это поможет!

1
ответ дан w3bshark 15 August 2018 в 21:39
поделиться

Ответы выше очень хорошие, но я хотел бы добавить что-то еще. Я новичок в Android, я встретил эту проблему во время своего развития. надеюсь, что это может помочь кому-то вроде меня.

  1. Экран Splash - это точка входа моего приложения, поэтому добавьте следующие строки в AndroidManifest.xml.
        <activity
            android:name=".SplashActivity"
            android:theme="@android:style/Theme.DeviceDefault.Light.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    
  2. Всплывающий экран должен отображаться только один раз в жизненном цикле приложения, я использую логическую переменную для записи состояния заставки и показываю ее только в первый раз.
    public class SplashActivity extends Activity {
        private static boolean splashLoaded = false;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            if (!splashLoaded) {
                setContentView(R.layout.activity_splash);
                int secondsDelayed = 1;
                new Handler().postDelayed(new Runnable() {
                    public void run() {
                        startActivity(new Intent(SplashActivity.this, MainActivity.class));
                        finish();
                    }
                }, secondsDelayed * 500);
    
                splashLoaded = true;
            }
            else {
                Intent goToMainActivity = new Intent(SplashActivity.this, MainActivity.class);
                goToMainActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                startActivity(goToMainActivity);
                finish();
            }
        }
    }
    

счастливое кодирование!

27
ответ дан zdd 15 August 2018 в 21:39
поделиться
  • 1
    Вы можете добавить android:noHistory="true" в AndroidManifest.xml, чтобы пользователь не возвращался к заставке с помощью кнопки «Назад». – Rachel 27 June 2015 в 13:19
  • 2
    это самое исключительное решение среди этих кодов ... – hadi 18 October 2015 в 10:58
0
ответ дан Agilanbu 5 September 2018 в 21:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: