Просмотр изображений во время выполнения не отображается в активности Launcher

С кодом ниже мое фоновое изображение не отображается в активности моего запуска. У меня также есть нить со сном трех секунд, но я вижу только белый экран в качестве фона. После задержки я перенаправляю на другое действие (в функции OnStart). Без перенаправления я вижу свое изображение в качестве фона. Как я могу увидеть мое изображение запуска, прежде чем перенаправить ко второму виду деятельности?

Заранее спасибо за помощь.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mContext = this;
    mAuth = FirebaseAuth.getInstance();

            RequestOptions options = new RequestOptions();
            options.centerCrop();

            RelativeLayout relativeLayout = new RelativeLayout(mContext);
            RelativeLayout.LayoutParams relLayoutParam = new RelativeLayout.LayoutParams(
                    RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
            imageView = new ImageView(mContext);
            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            imageView.setBackgroundResource(R.drawable.launch_screen_image);
            relativeLayout.addView(imageView, relLayoutParam);

            setContentView(relativeLayout, relLayoutParam);
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

}

@Override
public void onStart() {
    super.onStart();
    // Check if user is signed in (non-null) and update UI accordingly.
    SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
    FirebaseUser currentUser = mAuth.getCurrentUser();
    if (currentUser != null && currentUser.getUid() != null
            && currentUser.getUid().equals(mPrefs.getString("UID", "DEFAULT"))) {
        Intent i = new Intent(mContext, SocialPage.class);
        startActivity(i);
    } else {
        Intent i = new Intent(mContext, Login.class);
        startActivity(i);
    }
}

2 ответа

Решение

Попробуйте это, объяснил каждую строку с комментариями в коде:

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

        //Other stuff
        //...
            //Remove this line ==> imageView.setBackgroundResource(R.drawable.launch_screen_image);
            relativeLayout.addView(imageView, relLayoutParam);

            setContentView(relativeLayout, relLayoutParam);

            //set image resource after setContentView
            imageView.setImageResource(R.drawable.launch_screen_image);

            //Use handler instead of Thread.sleep()
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    //it calls continue() after 3 seconds of delay
                    continue();
                }
            },3000);


}

И метод continue() включает в себя:

private void continue(){

    // Check if user is signed in (non-null) and update UI accordingly.
    SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
    FirebaseUser currentUser = mAuth.getCurrentUser();
    if (currentUser != null && currentUser.getUid() != null
            && currentUser.getUid().equals(mPrefs.getString("UID", "DEFAULT"))) {
        Intent i = new Intent(mContext, SocialPage.class);
        startActivity(i);
    } else {
        Intent i = new Intent(mContext, Login.class);
        startActivity(i);
    }


}

Я. Это из-за того, что вы не управляли dpi для разных размеров изображения для разных разрешений устройств.

Пожалуйста, добавьте изображение как nodpi, если у вас есть только одно изображение для всех разрешений устройств на момент копирования в папке для рисования, как показано на рисунке. Таким образом, если нет изображения с таким конкретным разрешением, оно автоматически извлекает изображение из nodpi drawable.

Другие вопросы по тегам