2016-02-05 159 views
1

我做了一个飞溅布局,持续一段时间,然后应该加载其他活动,单独它完美的工作,但是当它连接到其他活动时,它显示空白屏幕。飞溅屏幕显示为空白屏幕

mainifest文件:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="andy.propaganda" 
    android:installLocation="auto" > 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/my_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme.NoActionBar" 
     > 
     <activity 
      android:name=".shit" 
      android:label="@string/app_name" 
      > 
      <intent-filter> 
       <action android:name="com.coderefer.androidsplashscreenexample.MAINACTIVITY" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

     <activity 
      android:name=".Splash" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <!-- ATTENTION: This was auto-generated to add Google Play services to your project for 
      App Indexing. See https://g.co/AppIndexing/AndroidStudio for more information. --> 
     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 
    </application> 

</manifest> 

splash活动:

package andy.propaganda; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.animation.Animation; 
import android.view.animation.AnimationUtils; 
import android.widget.ImageView; 

/** 
* Created by Andrew on 2/4/2016. 
*/ 
public class Splash extends Activity { 

    //welcome animation 
    ImageView loading_img; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 
     loading_img = (ImageView)findViewById(R.id.loading_view); 
     final Animation animatable = AnimationUtils.loadAnimation(this, R.anim.welcome_screen_anim); 
     loading_img.setAnimation(animatable); 

// 
     for(int i = 0;i< 100000000;i++); 
     Intent intent = new Intent(this, shit.class); 
     intent.putExtra("jhjh", 8); 
     startActivity(intent); 

    } 

} 

main活动:

package andy.propaganda; 

import android.app.Activity; 
import android.os.Bundle; 

/** 
* Created by Andrew on 2/5/2016. 
*/ 
public class shit extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 

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="@color/MyBlue" 
    > 
    <ImageView 
     android:layout_width="300dp" 
     android:layout_height="300dp" 
     android:src="@drawable/my_launcher" 
     android:paddingTop="60dp" 
     android:id="@+id/imageView" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

    <ImageView 
     android:layout_width="75dp" 
     android:layout_height="75dp" 
     android:src="@drawable/loading" 
     android:layout_marginBottom="43dp" 
     android:id="@+id/loading_view" 

     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="loading your files" 
     android:id="@+id/welcome_message" 
     android:focusable="false" 
     android:textColor="#010101" 
     android:textSize="@dimen/abc_action_bar_progress_bar_size" 
     android:layout_above="@+id/loading_view" 
     android:layout_alignRight="@+id/imageView" 
     android:layout_alignEnd="@+id/imageView" 
     android:layout_marginBottom="50dp" /> 

</RelativeLayout> 
+0

删除此行<意图滤波器> <操作机器人:名称= “com.coderefer.androidsplashscreenexample.MAINACTIVITY”/> <类别机器人:名称=“android.intent .category.DEFAULT“/> 从你的** Shit **清单活动 – Amir

+0

我试过了,但没有任何区别 – andrew

+0

删除for循环,而不是那个使用Handler你的代码似乎很好:) – Amir

回答

2

你应该在启动画面上使用计时器而不是for(int i = 0;i< 100000000;i++);,这会等待一段时间,假设5秒并且加载另一个活动。

package andy.propaganda; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.animation.Animation; 
import android.view.animation.AnimationUtils; 
import android.widget.ImageView; 

/** 
* Created by Andrew on 2/4/2016. 
*/ 
public class Splash extends Activity { 

    //welcome animation 
    ImageView loading_img; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 
     loading_img = (ImageView)findViewById(R.id.loading_view); 
     final Animation animatable = AnimationUtils.loadAnimation(this, R.anim.welcome_screen_anim); 
     loading_img.setAnimation(animatable); 



    new Timer().schedule(new TimerTask() {   
    @Override 
    public void run() { 
     // your task 
     Intent intent = new Intent(this, shit.class); 
     intent.putExtra("jhjh", 8); 
     startActivity(intent); 
    } 
    }, 5000); 

    } 

} 
+0

它工作完美,但是如果我需要执行特定的任务并将其作为参数发送给下一个活动,那么在我的情况下,我想要搜索第e完整的设备加载阵列中的所有mps文件并将其发送到下一个活动? – andrew

+0

调度(TimerTask任务,长延迟)方法用于在指定延迟后开始调度指定的执行任务。您可以在运行方法中定义您的任务。 –

1

的所有首先不使用for循环等待时间而不是使用的处理程序像这样的东西:

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

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

然后从manifest.xml中删除此行

其余的代码似乎没问题:)

也看看this链接哪个很好解释了关于初始屏幕

+0

谢谢,按预期工作 – andrew

1

RxJava溶液:

Observable.empty().subscribeOn(AndroidSchadelurs.mainThread()).delay(500, TimeUtils.MILISECONDS).subscribe(this::startActivity(this, new Intent));