2013-11-27 31 views
0

我想加載多個網址在一段時間後會自動改變,一切都工作正常,除了當我第一次運行我的應用程序第一次它顯示的第一個10秒(這基本上是我設置的時間段)的空白屏幕,然後它加載的第一個網址,我不知道它爲什麼會這樣發生。Android:從Web顯示空白屏幕首次加載網址的網址

下面是我的代碼提前

public class Gif_First extends Activity { 

WebView mWebView; 
CountDownTimer mTimer; 

@SuppressLint("SetJavaScriptEnabled") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.animation); 

    mTimer = new CountDownTimer(10000, 1000) { 
     private String[] myArray = { 
       "http://i.share.pho.to/efe195fd_o.gif", 
       "http://i.share.pho.to/cf478918_o.gif", 
       "http://i.share.pho.to/5ae5a0a9_o.gif", 
       "http://i.share.pho.to/17d0c96f_o.gif", 
       "http://i.share.pho.to/d2139e2d_o.gif" }; 
     int currentIndex = 0; 

     public void onTick(long millisUntilFinished) { 
     } 

     public void onFinish() { 
      if (currentIndex < myArray.length) { 
       mWebView.loadUrl(myArray[currentIndex]); 
       currentIndex++; 
      } else { 
       currentIndex = 0; 
       if (currentIndex < myArray.length) 
        mWebView.loadUrl(myArray[currentIndex]); 
       currentIndex++; 
       mTimer.start(); 
      } 
      mTimer.start(); 
     } 
    }; 

    mTimer.start(); 
    mWebView = (WebView) findViewById(R.id.webviewActionView); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.setWebViewClient(new WebSliderWebViewClient() { 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(mWebView, url); 
      //Toast.makeText(getApplicationContext(), "Done!", 
       // Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onReceivedError(WebView view, int errorCode, 
       String description, String failingUrl) { 
      Toast.makeText(getApplicationContext(), 
        "Oh no! " + description, Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
     mWebView.goBack(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

private class WebSliderWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 
} 

public void onPause() { 
    super.onPause(); 
    mTimer.cancel(); 
} 
} 

感謝。任何幫助,將不勝感激...

回答

0

語法「CountDownTimer(start time, intervel time)」..代替mTimer = new CountDownTimer(10000, 1000)而不是mTimer = new CountDownTimer(0, 1000)希望它能工作。快樂編碼...

+0

不,這是給NullPointerException異常;:試試這個onFinish()方法。 – InnocentKiller

0

使用該自定義:

private class MyCountDown extends CountDownTimer 
{ 
long duration, interval; 
public MyCountDown(long millisInFuture, long countDownInterval) { 
    super(millisInFuture, countDownInterval); 
    // TODO Auto-generated constructor stub 
    duration = millisInFuture; 
    interval = countDownInterval; 
    start(); 
} 

@Override 
public void onFinish() { 

} 

@Override 
public void onTick(long duration) { 

} 
} 
+0

如何使用這個類,因爲我已經在我的代碼中實現了這一點,但沒有改變,同樣的事情正在發生,你可以舉例說明如何在我的課堂中使用它。 – InnocentKiller

0
public class Gif_First extends Activity { 

WebView mWebView; 
CountDownTimer mTimer; 

@SuppressLint("SetJavaScriptEnabled") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
requestWindowFeature(Window.FEATURE_NO_TITLE); 
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
     WindowManager.LayoutParams.FLAG_FULLSCREEN); 
setContentView(R.layout.animation); 

mTimer = new MyCountDown(10000, 1000); 
mWebView = (WebView) findViewById(R.id.webviewActionView); 
mWebView.getSettings().setJavaScriptEnabled(true); 
mWebView.setWebViewClient(new WebSliderWebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(mWebView, url); 
     //Toast.makeText(getApplicationContext(), "Done!", 
      // Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onReceivedError(WebView view, int errorCode, 
      String description, String failingUrl) { 
     Toast.makeText(getApplicationContext(), 
       "Oh no! " + description, Toast.LENGTH_SHORT).show(); 
    } 
}); 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
    mWebView.goBack(); 
    return true; 
} 
return super.onKeyDown(keyCode, event); 
} 

private class WebSliderWebViewClient extends WebViewClient { 
@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    view.loadUrl(url); 
    return true; 
} 
} 

public void onPause() { 
super.onPause(); 
mTimer.cancel(); 
} 

class MyCountDown extends CountDownTimer 
{ 
long duration, interval; 
private String[] myArray = { 
      "http://i.share.pho.to/efe195fd_o.gif", 
      "http://i.share.pho.to/cf478918_o.gif", 
      "http://i.share.pho.to/5ae5a0a9_o.gif", 
      "http://i.share.pho.to/17d0c96f_o.gif", 
      "http://i.share.pho.to/d2139e2d_o.gif" }; 
int currentIndex = 0; 
public MyCountDown(long millisInFuture, long countDownInterval) { 
    super(millisInFuture, countDownInterval); 
    // TODO Auto-generated constructor stub 
    duration = millisInFuture; 
    interval = countDownInterval; 
    start(); 
} 

@Override 
public void onFinish() { 
    if (currentIndex < myArray.length) { 
      mWebView.loadUrl(myArray[currentIndex]); 
      currentIndex++; 
     } else { 
      currentIndex = 0; 
      if (currentIndex < myArray.length) 
       mWebView.loadUrl(myArray[currentIndex]); 
      currentIndex++; 
     } 
} 

@Override 
public void onTick(long duration) { 

} 
} 
} 
+0

好吧,我做了同樣的事情,但仍然持續10秒。 – InnocentKiller

+0

chane第一個參數爲0 –

+0

如果我這樣做,mTimer = new CountDownTimer(0,10000)它在mWebView.loadUrl(myArray [currentIndex])上顯示錯誤NullPointerException; onFinish()方法。 – InnocentKiller

1

您沒有設置你的MuCountDown類以外的任何URL,這就是爲什麼你得到錯誤。這意味着您必須在您的Gif_First類中至少提供一個網址

mWebView.loadUrl("http://stackoverflow.com"); 

下面的代碼使用,

mTimer.start(); 
mWebView = (WebView) findViewById(R.id.webviewActionView); 
mWebView.loadUrl("http://stackoverflow.com"); 
mWebView.getSettings().setJavaScriptEnabled(true); 
0

有導致可能的原因「的WebView走後完成加載頁空白」:

  1. 如果在佈局XML文件中定義的網頁視圖部分有一個像尺寸

     
    android:layout_width="wrap_content" 
    

     
    android:layout_height="wrap_content" 
    

    然後在加載頁面之後,定義內容並且WebView試圖「包裝」它,因此在某些情況下將視圖的尺寸減小爲0dp並使WebView不可見。 解決方案:改變所有這些爲FILL_PARENT

     
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    
  2. 這可以通過SSL認證的錯誤引起的。在\t \t \t \t \t mWebView.loadUrl(myarray的[CURRENTINDEX])

     
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { 
        handler.proceed(); 
    }