--- title: AndroidのWebviewでSwipeRefreshLayoutを使用した際のスプラッシュ画面の実装方法 tags: Android webView SwipeRefreshLayout author: ymkwt slide: false --- Webviewアプリの立ち上げ時に下記のvisibilityを切り替える方法でスプラッシュ画面を実装していたのだけど、pullTorefresh機能を追加したくてSwipeRefreshLayoutを使ったらスプラッシュの表示に苦労した。 [Splash screen while loading a url in a webview in android app](http://stackoverflow.com/questions/9589365/splash-screen-while-loading-a-url-in-a-webview-in-android-app) - レイアウトの変更ではどうにもうまくいかず - assetsにスプラッシュ用HTMLを用意 - 簡易Javascriptで縦のセンタリング SwipeRefreshLayoutの使用を前提にスプラッシュの実装を試みた。レイアウトの切り替えではスプラッシュが表示されなかったり上スクロールができなくなったりとうまくいかなかった。 そこで、assetsフォルダにスプラッシュ用のHTMLを用意しまずWebviewでそれを表示してからサイトをロードさせる方法をとるとうまくいった。 *** まず、assetsフォルダにicon.pngと下記のsplash.htmlを用意する ```ruby:splash.html スプラッシュ画面

アプリタイトル

``` 画像はおしゃれに小さく表示させる。if文の箇所は念のため。端末の画面サイズによらずタイトルと画像を中央に表示させることにこだわりHTMLにJavascriptを埋め込んで調整した。 プログラムでは用意したHTMLファイルをまずロードする。 ```ruby:MainActivity webview.loadUrl("file:///android_asset/splash.html"); ``` ローカルへのアクセスなので瞬時にonPageFinishedが呼び出される。そこで本家のサイトにアクセスしに行く。 ```ruby:MainActiviry webview.setWebViewClient(new WebViewClient(){ @Override public void onPageFinished(WebView view, String url) { mSwipe.setRefreshing(false); if(url.contains("splash")) webview.loadUrl("http://..."); } ``` いい感じ。