2016-03-02 2 views
-1

Код для splash.xml:Начальный экран не отображается правильно

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:background="@drawable/notice2" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context=".SplashScreen"> 
</RelativeLayout> 

Код для AndroidManifest.xml:

<application 

    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 

    <activity 

     android:name="com.kksworld.noticeboard.SplashScreen" 
     android:label="@string/title_activity_splash_screen" 

     android:theme="@style/AppTheme.NoActionBar"> 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="com.kksworld.noticeboard.LoginActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar"> 
    </activity> 
    <activity 
     android:name="com.kksworld.noticeboard.Registration" 
     android:label="@string/title_activity_registration" 
     android:theme="@style/AppTheme.NoActionBar" /> 

</application> 

`Я пытаюсь добавить заставку в моем проекте. Но после запуска приложения экран останавливается на время, когда я установил таймер, но точный экран заставки не наступает. После этого все идет. Пожалуйста помоги. Благодарю.

enter image description here

Код для Splash Activity:

public class SplashScreen extends Activity { 

    // Splash screen timer 
    private static int SPLASH_TIME_OUT = 3000; 

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

     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() { 
       // This method will be executed once the timer is over 
       // Start your app main activity 
       Intent i = new Intent(SplashScreen.this, LoginActivity.class); 
       startActivity(i); 

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

} 
+0

Опубликовать код вашей деятельности Splash. –

+0

Есть ли у вас код, чтобы показать нам? – Rohit5k2

+0

Скопируйте вставьте свой код. Нет изображений. – Rohit5k2

ответ

1

Попробуйте использовать сильфон код

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="info.androidhive.androidsplashscreentimer" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <!-- Splash screen --> 
     <activity 
      android:name="info.androidhive.androidsplashscreentimer.SplashScreen" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.Black.NoTitleBar" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

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

     <!-- Main activity --> 
     <activity 
      android:name="info.androidhive.androidsplashscreentimer.MainActivity" 
      android:label="@string/app_name" > 
     </activity> 
    </application> 

</manifest> 

activity_splash.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/gradient_background" > 

    <ImageView 
     android:id="@+id/imgLogo" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:src="@drawable/wwe_logo" /> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="10dp" 
     android:textSize="12dp" 
     android:textColor="#454545" 
     android:gravity="center_horizontal" 
     android:layout_alignParentBottom="true" 
     android:text="www.androidhive.info" /> 

</RelativeLayout> 

SplashScreen.java

package info.androidhive.androidsplashscreentimer; 

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

public class SplashScreen extends Activity { 

    // Splash screen timer 
    private static int SPLASH_TIME_OUT = 3000; 

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

     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() { 
       // This method will be executed once the timer is over 
       // Start your app main activity 
       Intent i = new Intent(SplashScreen.this, MainActivity.class); 
       startActivity(i); 

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

} 
+0

После выполнения всего этого я получаю эту ошибку –

1

Всплеск экраны, задерживающие приложение не следует использовать, как они прерывают пользователь в то, что они хотят сделать с приложением ,

Но: Существует способ лучшего подхода, и его еще проще реализовать! Для каждого приложения требуется некоторое время для запуска, и в процессе его запуска большинство приложений отображаются только на белом фоне, так как это значение по умолчанию. Вы можете изменить это, однако, добавив новый стиль для вашего themes.xml, который устанавливает windowBackground любого вытяжки

<style name="YourApp.AppTheme.Splashscreen" parent="YourApplicationsTheme"> 
    <item name="android:windowBackground">@drawable/splashscreen</item> 
</style> 

Вы можете определить вытяжку, как, что, если вы хотите логотип на цветной фоне:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" 
    android:opacity="opaque"> 
    <item android:drawable="@color/some_color"/> 
    <item> 
     <bitmap 
      android:gravity="center" 
      android:src="@drawable/some_logo"/> 
    </item> 
</layer-list> 

Просто добавьте эту тему в ваш <application> в AndroidManifest.xml, и ваш заставка уже работает и работает.

Наконец, установите тему обратно к нормальной теме после запуска с помощью

getApplication().setTheme(R.style.YourApplicationsTheme); 

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

Все сделано! Красивый заставку без задержки пользователя.

Руководство по дизайну Android также предлагает that way, а также вы можете найти this для справки.

+0

Я не понял, что вы здесь написали. –

+0

Что именно вы не поняли? уточните – iridic

+0

Спасибо за помощь. Теперь я понимаю. –

0

Проверьте файлы макета. Убедитесь, что вы используете правильные файлы макета.В java-коде вы использовали content_splash_screen.xml, но вы разместили код для splash.xml.

В коде нет ошибок, код должен работать нормально.

+0

Нет, я написал здесь только. В моем коде я написал content_splash_screen.xml –