2013-11-27 32 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(); 
    }