Autore Topic: Problema Splash Screen  (Letto 1273 volte)

Offline Dreww

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
Problema Splash Screen
« il: 07 Dicembre 2015, 12:47:08 CET »
0
Salve a tutti, oggi sono andato ad aprire Android studio per creare uno Splash Screen in un applicazione ma dopo aver effettuato il test sul mio dispositivo dice "Il programma *nome* è stato arrestato"
Come risolvo questo problema?
Ho usato questi code:


AndroidManifest.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.ayoub.livechannels"
   android:versionCode="1"
   android:versionName="1.0" >

    <uses-sdk
       android:minSdkVersion="10"
       android:targetSdkVersion="21" />

    <application
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name" >

        <!-- SplashActivity -->
        <activity
           android:name="com.example.ayoub.livechannels.MainActivity"
           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>
    </application>

</manifest>

SplashScreen.java
Codice (Java): [Seleziona]
package SplashScreen;

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

import com.example.ayoub.livechannels.MainActivity;
import com.example.ayoub.livechannels.R;

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);
    }
}

Activity_main.xml
Codice (XML): [Seleziona]
<?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:id="@+id/splashscreen" android:layout_width="fill_parent"
       android:layout_height="fill_parent" android:src="@drawable/ic_launcher"
       android:layout_gravity="center|top" android:contentDescription="@string/app_name"/>
    <TextView android:layout_width="wrap_content"
       android:layout_height="wrap_content" android:text="@string/app_name" android:layout_gravity="center"/>
</LinearLayout>

MainActivity.java
Codice (Java): [Seleziona]
package com.example.ayoub.livechannels;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

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

Activity_splash.xml
Codice (XML): [Seleziona]
<?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="#37474f" >

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

    <TextView
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_alignParentBottom="true"
       android:layout_marginBottom="100dp"
       android:gravity="center_horizontal"
       android:text="www.androidSRC.net"
       android:textColor="#ffa000"
       android:textSize="25sp" />

</RelativeLayout>

Offline maverik1408

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
    • MaverikApps
  • Dispositivo Android:
    NEXUS 5
  • Play Store ID:
    Maverik
Re:Problema Splash Screen
« Risposta #1 il: 07 Dicembre 2015, 13:23:02 CET »
0
secondo me ci vuole una cosa del genere

Codice (Java): [Seleziona]
        <!-- SplashActivity -->
        <activity
           android:name="com.example.ayoub.livechannels.SplashActivity"
           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>

       <activity
           android:name="com.example.ayoub.livechannels.MainActivity"
           android:label="@string/app_name"
           android:screenOrientation="portrait"
           android:theme="@android:style/Theme.Black.NoTitleBar" >
        </activity>
Maverik @ Google Play Store

Offline wlf

  • Utente normale
  • ***
  • Post: 315
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:Problema Splash Screen
« Risposta #2 il: 07 Dicembre 2015, 13:45:02 CET »
0
Condivido, il manifest deve far partire lo Splashscreen che a sua volta fa partire la MainActivity dopo n millisecondi e termina lo Splashscreen in modo che venga eliminato dallo stack.

Offline Dreww

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
Re:Problema Splash Screen
« Risposta #3 il: 08 Dicembre 2015, 14:29:22 CET »
0
secondo me ci vuole una cosa del genere

Codice (Java): [Seleziona]
        <!-- SplashActivity -->
        <activity
           android:name="com.example.ayoub.livechannels.SplashActivity"
           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>

       <activity
           android:name="com.example.ayoub.livechannels.MainActivity"
           android:label="@string/app_name"
           android:screenOrientation="portrait"
           android:theme="@android:style/Theme.Black.NoTitleBar" >
        </activity>

Fatto ma non so perchè la parola SplashActivity me la segna in rosso e quindi non posso testare..
Codice (XML): [Seleziona]
android:name="com.example.ayoub.livechannels.SplashActivity"Cosa potrei fare?
Grazie mille

EDIT: Ho risolto il problema della parola rossa ma una volta mandato in Run, da sempre lo stesso problema ovvero "Il programma *nome* è stato arrestato"
« Ultima modifica: 08 Dicembre 2015, 14:41:31 CET da Dreww »

Offline wlf

  • Utente normale
  • ***
  • Post: 315
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:Problema Splash Screen
« Risposta #4 il: 08 Dicembre 2015, 22:19:52 CET »
0
Tu l'activity dello splash l'ha chiamata SplashScreen, quindi sostituisci SplashActivity con SplashScreen! ;)

Offline Dreww

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
Re:Problema Splash Screen
« Risposta #5 il: 08 Dicembre 2015, 23:37:18 CET »
0
Tu l'activity dello splash l'ha chiamata SplashScreen, quindi sostituisci SplashActivity con SplashScreen! ;)

Fatto ma da lo stesso problema

Nella log di Android Studio (Android Monitor) appare questo:

Codice: [Seleziona]
12-08 23:35:58.429 2524-2524/? I/SELinux: Function: selinux_android_load_priority , priority [2] , priority version is VE=SEPF_GT-I9305_4.4.4_0046
12-08 23:35:58.434 2524-2524/? E/dalvikvm: >>>>> Normal User
12-08 23:35:58.434 2524-2524/? E/dalvikvm: >>>>> com.example.ayoub.livechannels [ userId:0 | appId:10252 ]
12-08 23:35:58.439 2524-2524/? D/dalvikvm: Late-enabling CheckJNI
12-08 23:35:58.589 2524-2524/com.example.ayoub.livechannels D/AndroidRuntime: Shutting down VM
12-08 23:35:58.589 2524-2524/com.example.ayoub.livechannels W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x4199ec08)
12-08 23:35:58.594 2524-2524/com.example.ayoub.livechannels E/AndroidRuntime: FATAL EXCEPTION: main
                                                                              Process: com.example.ayoub.livechannels, PID: 2524
                                                                              java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.ayoub.livechannels/com.example.ayoub.livechannels.SplashScreen}: java.lang.ClassNotFoundException: Didn't find class "com.example.ayoub.livechannels.SplashScreen" on path: DexPathList[[zip file "/data/app/com.example.ayoub.livechannels-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.ayoub.livechannels-2, /vendor/lib, /system/lib]]
                                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2313)
                                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2500)
                                                                                  at android.app.ActivityThread.access$900(ActivityThread.java:171)
                                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                  at android.os.Looper.loop(Looper.java:146)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:5679)
                                                                                  at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                  at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
                                                                                  at dalvik.system.NativeStart.main(Native Method)
                                                                               Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.ayoub.livechannels.SplashScreen" on path: DexPathList[[zip file "/data/app/com.example.ayoub.livechannels-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.ayoub.livechannels-2, /vendor/lib, /system/lib]]
                                                                                  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67)
                                                                                  at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
                                                                                  at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
                                                                                  at android.app.Instrumentation.newActivity(Instrumentation.java:1067)
                                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2304)
                                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2500) 
                                                                                  at android.app.ActivityThread.access$900(ActivityThread.java:171) 
                                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309) 
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                  at android.os.Looper.loop(Looper.java:146) 
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:5679) 
                                                                                  at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                  at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 
                                                                                  at dalvik.system.NativeStart.main(Native Method) 
12-08 23:36:00.024 2524-2524/com.example.ayoub.livechannels I/Process: Sending signal. PID: 2524 SIG: 9

Offline Dreww

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
Re:Problema Splash Screen
« Risposta #6 il: 14 Dicembre 2015, 21:08:30 CET »
0
Niente da fare quindi? E' possibile che uno di voi me lo crei per poi passarmelo? Sono disposto a pagare..

Offline maverik1408

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
    • MaverikApps
  • Dispositivo Android:
    NEXUS 5
  • Play Store ID:
    Maverik
Re:Problema Splash Screen
« Risposta #7 il: 14 Dicembre 2015, 22:16:19 CET »
0
Prova a cambiare i nomi delle classi da

Codice (Java): [Seleziona]
 android:name="com.example.ayoub.livechannels.MainActivity"
A

Codice (Java): [Seleziona]
 android:name=".MainActivity"
E prova a fare clean project
Maverik @ Google Play Store

Offline Dreww

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
Re:Problema Splash Screen
« Risposta #8 il: 16 Dicembre 2015, 14:30:24 CET »
0
Ho spostato il file SplashScreen.java nella cartella in cui c'è MainActivity.java ed ha funzionato, ovvero che non mi da più le stringhe in rosso
Vado a runnare e mi da un altro problema.. L'app si apre, fa vedere ''Hello Word'' (Senza lo splash screen) con sfondo nero e subito si chiude dicendo ''L'applicazione ** si è arrestata''

Offline maverik1408

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
    • MaverikApps
  • Dispositivo Android:
    NEXUS 5
  • Play Store ID:
    Maverik
Re:Problema Splash Screen
« Risposta #9 il: 16 Dicembre 2015, 16:31:37 CET »
0
le due activity scritte in quel modo nel mainfest devono stare nella stessa directory.

manda il LOG
Maverik @ Google Play Store

Offline Dreww

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
Re:Problema Splash Screen
« Risposta #10 il: 16 Dicembre 2015, 20:55:38 CET »
0
Codice: [Seleziona]
12-16 20:54:49.442 10383-10383/com.example.livechannels E/AndroidRuntime: FATAL EXCEPTION: main
                                                                          Process: com.example.livechannels, PID: 10383
                                                                          java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.livechannels/com.example.livechannels.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
                                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2441)
                                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2500)
                                                                              at android.app.ActivityThread.access$900(ActivityThread.java:171)
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                              at android.os.Looper.loop(Looper.java:146)
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5679)
                                                                              at java.lang.reflect.Method.invokeNative(Native Method)
                                                                              at java.lang.reflect.Method.invoke(Method.java:515)
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
                                                                              at dalvik.system.NativeStart.main(Native Method)
                                                                           Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
                                                                              at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:310)
                                                                              at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:279)
                                                                              at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:253)
                                                                              at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
                                                                              at com.example.livechannels.MainActivity.onCreate(MainActivity.java:13)
                                                                              at android.app.Activity.performCreate(Activity.java:5582)
                                                                              at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
                                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2405)
                                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2500) 
                                                                              at android.app.ActivityThread.access$900(ActivityThread.java:171) 
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309) 
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                              at android.os.Looper.loop(Looper.java:146) 
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5679) 
                                                                              at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                              at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 
                                                                              at dalvik.system.NativeStart.main(Native Method) 
12-16 20:54:49.462 10383-10383/com.example.livechannels I/Process: Sending signal. PID: 10383 SIG: 9

Offline maverik1408

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
    • MaverikApps
  • Dispositivo Android:
    NEXUS 5
  • Play Store ID:
    Maverik
Re:Problema Splash Screen
« Risposta #11 il: 16 Dicembre 2015, 22:52:44 CET »
0
Il problema dovrebbe state nel file style.xml
Maverik @ Google Play Store

Offline Dreww

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
Re:Problema Splash Screen
« Risposta #12 il: 17 Dicembre 2015, 11:19:10 CET »
0
Nel file AndroidManifest.xml ho modificato la stringa in
Codice: [Seleziona]
android:theme="@style/Theme.AppCompat togliendo DarkBlack e funziona ma c'è un altro problema, non mi fa vedere a tutto schermo l'immagine

Offline maverik1408

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
    • MaverikApps
  • Dispositivo Android:
    NEXUS 5
  • Play Store ID:
    Maverik
Re:Problema Splash Screen
« Risposta #13 il: 17 Dicembre 2015, 11:24:10 CET »
0
io per il tutto schermo uso questo, ora non so se è la cosa migliore

Codice (Java): [Seleziona]
       
this.requestWindowFeature(Window.FEATURE_NO_TITLE);    // Removes title bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);    // Removes notification bar
setContentView(.....);
Maverik @ Google Play Store

Offline Dreww

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
Re:Problema Splash Screen
« Risposta #14 il: 17 Dicembre 2015, 11:29:29 CET »
0
Messo su MainActivity.java ma appena runno mi chiude l'app arrestandola
Dove dovrei mettere il codice e come lo configuro?
Nell'ultima parte c'è scritto
Codice: [Seleziona]
setContentView(.....); Dentro a quella parentesi cosa dovrei mettere?
Grazie mille  ;-)

Post unito: 17 Dicembre 2015, 19:39:25 CET
Credo di esserci riuscito..
Ho modificato il file Activity_main inserendo questo codice che mi ha allargato l'immagine
Codice: [Seleziona]
<?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:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/ic_launcher"
        android:scaleType="fitXY" />

</LinearLayout>

Una volta allargata l'immagine ho settato ScaleType su FitXY.
Però ho un problema, l'immagine appare anche dopo lo splash screen ma appare con la barra sopra. Come tolgo l'immagine lasciando solo la barra?
Grazie mille
« Ultima modifica: 17 Dicembre 2015, 19:39:26 CET da Dreww, Reason: Merged DoublePost »