2013-07-22 112 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); 
    }