2013-07-22 153 views
1

我的问题是,如果我把我的溅为Dialog加入这一行的表现有一个延迟:android:theme="@android:style/Theme.Holo.Dialog.NoActionBar"延迟后,闪屏

后启动画面消失,它需要大约6秒以上的主要活动出现。

我该如何让这个延迟消失?

飞溅代码:

public class SplashActivity extends Activity { 
private final int DURATION = 3000; 
private Thread mSplashThread; 

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

    mSplashThread = new Thread() { 

     @Override 
     public void run() { 
      synchronized (this) { 
       try { 
        wait(DURATION); 
       } catch (InterruptedException e) { 
       } finally { 
        finish(); 
        Intent intent = new Intent(getBaseContext(), 
          MainActivity.class); 
        startActivity(intent); 
       } 
      } 
     } 

    }; 
mSplashThread.start(); 

}

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     synchronized (mSplashThread) { 
      mSplashThread.notify(); 
     } 
    } 
    return true; 
} 

}

+0

您是否使用了延迟'Handler'? –

+0

不,如果我只是从Manifest中删除那条线,那么就没有任何延迟。只有当我添加该行才能将我的飞溅视为对话。 – Chris

+0

发布您的启动画面代码 – dd619

回答

1

而不是使用飞溅的对话,你可以把你所有的后台工作,闪屏活动,然后开始你的主活动..如果你需要对话动画,那么你可以使用这样的动画。

overridePendingTransition(R.anim.come_up,R.anim.go_down);

通过这个,你可以管理你的活动切换时间。

+0

我需要我的启动画面看起来像一个对话框(在手机屏幕中间的小窗口)。 – Chris

+0

我认为你没有使用你的飞溅下载数据..如果是这样,那么为什么你不开始主要活动,并在onCreate()做一个飞溅的对话,并且时间覆盖onBackpress(),以便您的对话可以在处置时被解雇。 –

+0

对不起,你有这样的例子吗?我刚刚开始与android – Chris

0

我不知道这个答案是适当的,但我已经做了这样的:

@Override 
    public void run() 
    { 
     // TODO Auto-generated method stub 
     startActivity(new Intent (SplashActivity.this , MainActivity.class)) ; 
    } 

    @Override 
    protected void onStart() 
    { 
     super.onStart(); 
     if(!isClosed) 
      splashHandler.postDelayed(this, "putYourTimeHere"); 
    } 
+0

putYourTimeHere = 1000(1000 == 1秒) –

+0

所以,这将设置一个延迟后,我的飞溅权?问题是我有一个延迟,我不想在飞溅之后有任何延迟, – Chris

0

这是在其最好的工作对我来说..

final int splashTimeOut = 3000; 

    Thread splashThread = new Thread(){ 
       int wait = 0; 
       @Override 
       public void run() { 
        try { 
         super.run(); 
         while(wait < splashTimeOut){ 
          sleep(100); 
          wait += 100; 
         } 
        } catch (Exception e) { 
        }finally{ 
    startActivity(new Intent(SplashScreen.this,LoginActivity.class)); 
         finish(); 
        } 
       } 
      }; 
      splashThread.start(); 
0

这是代码一些时间延迟的飞溅屏幕显示 .. 这里设置在splash_screen.xml中绘制的飞溅图像。

import android.location.Criteria; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Build; 
import android.os.Bundle; 
import android.os.Handler; 
import android.telephony.TelephonyManager; 
import android.util.Log; 
import android.view.Window; 
import android.widget.Toast; 
import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 

public class SplashScreen extends Activity { 

LocationManager locationManager; 
String provider, formattedDate, imeid; 
double lat, lon; 



@SuppressLint("NewApi") 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 

    setContentView(R.layout.splash_screen); 

    Calendar c = Calendar.getInstance(); 
    SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
     formattedDate = df.format(c.getTime()); 



    new Handler().postDelayed(new Runnable() { 
     public void run() { 
      Log.i("JO", "run"); 
      Intent in = new Intent(SplashScreen.this,SecondActivity.class); 
      //in.putExtra("refreshclick", clickRefreshButton); 
      //in.putExtra("Current_Date", formattedDate); 
     // in.putExtra("ImeiId", imeid); 
//Log.i("JO", "Current_Date"+formattedDate+"; 
    ImeiId"+imeid+";lat"+lat+"lon"+lon); 
      startActivity(in); 

      finish(); 
     } 
    }, 1000); 

} 



    } 
+0

因此,这会在我的飞溅之后产生延迟吗?问题是我有一个延迟,我不想在飞溅之后有任何延迟, – Chris

+0

上面的显示在启动画面后没有延迟,它只是显示在指定时间之上的闪屏。 – harikrishnan

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

      @Override 
      public void run() { 

       Intent i = new Intent(SplashActivity.this, MainActivity.class); 
       startActivity(i); 

       finish(); 
      } 
     }, DURATION); 
    }