Фон заставок не виден

#android #xml

#Android #xml

Вопрос:

Я пытаюсь создать заставку. Я добавил фоновое изображение в XML-файл заставки. Размер фонового изображения составляет всего 382 КБ. но он не отображается. Но в предварительном просмотре он показывает мне изображение.

Вот файл xml

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/back_ground"
    tools:context="com.wisaver.app.updated.activities.SplashSecond">

</RelativeLayout>
  

еще один всплеск xml

 <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/back_ground_2"
    tools:context=".updated.activities.SplashActivity">


    <!--<ImageView
        android:id="@ id/ic_splash"
        android:layout_gravity="center"
        android:background="@drawable/back_ground_2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />-->
    <ImageView
        android:id="@ id/iv_splash"
        android:layout_gravity="center"
        android:background="@drawable/logo"
        android:layout_width="300sp"
        android:layout_height="140dp" />


</FrameLayout>
  

Манифест

 <activity
        android:name=".updated.activities.SplashActivity"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".updated.activities.SplashSecond"
        android:screenOrientation="portrait" />
  

Я тестирую его на Nexus 5. Я разрабатываю приложение с buildToolsVersion 24.0.0. Как заставить это работать? Некоторая помощь здесь приветствуется.

 public class SplashActivity extends AppCompatActivity {


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

    Thread th=new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                Thread.sleep(1000);
                startActivity(new Intent(SplashActivity.this,SplashSecond.class));
                finish();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    });

    th.start();
}
}
  

Вот еще один

 public class SplashSecond extends AppCompatActivity {

//boolean letGo=true;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash_second);
    Thread th=new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                Thread.sleep(400);
                startActivity(new Intent(SplashSecond.this,ConsumerRetailerActivity.class));
                finish();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    });
  }
  

Комментарии:

1. это должно сработать.

2. Точно, это должно работать, но это не так: (

3. можете ли вы опубликовать свой код SplashActivity?

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

5. Показать SplashActivity код ….. Просто совет, если вы используете Android Studio, сначала очистите проект, а затем попробуйте его перестроить. Иногда он не компилирует свежие изменения в проекте.

Ответ №1:

Измените свой Thread код в обоих действиях следующим образом:

 new Thread() {
    @Override
    public void run() {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        myhandler.post(new Runnable() {
            @Override
            public void run() {
                startActivity(new Intent(SplashActivity.this, SplashSecond.class));
                finish();
            }
        });

    }
}.start();
  

или вы также можете попробовать следующий код:

 new Handler().postDelayed(new Runnable() {

    @Override
    public void run() {
        // This method will be executed once the timer is over
        // Start your app main activity

        startActivity(new Intent(SplashActivity.this, SplashSecond.class));

        // close this activity
        finish();
    }
}, SPLASH_TIME_OUT);
  

Ответ №2:

Самый простой способ отображения заставки.

1. создайте activity_splash.xml в res/layout

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="match_parent">
    <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@ id/imgSplash"
            android:layout_gravity="center_horizontal"
            android:scaleType="fitCenter"/>
</LinearLayout>
  

2. добавьте приведенный ниже код в SplashActivity.java класс

 public class SplashActivity extends AppCompatActivity implements Runnable {
    private static int SPLASH_DELAY = 2000; //miliseconds
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        ImageView imgSplash = (ImageView) findViewById(R.id.imgSplash);

        //set your image
        imgSplash.setImageResource(R.mipmap.ic_launcher);

        Handler handler = new Handler(getMainLooper());
        handler.postDelayed(this,SPLASH_DELAY);
    }

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

3. изменение AndroidManifest.xml между <application>...</application>

 <activity android:name=".SplashActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
</activity>
<activity android:name=".MainActivity">
</activity>
  

Ответ №3:

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