WebViewを使用したWebページの表示について

1,364 views
Skip to first unread message

小浦 新市

unread,
Apr 12, 2011, 6:22:09 AM4/12/11
to android-g...@googlegroups.com
皆様はじめまして。小浦と申します。

WebViewを使用したWebページの表示について質問がございます。

本文の最後にあるようなBrowserActivityクラスを作成し、
このクラスを使ってWebページを表示していたのですが、
Webページの内容によっては、
loadUrlメソッドの実行に時間が掛かってしまうため、
このActivityに遷移した後に画面全体が真っ白な状態が
数秒続くという不具合に悩んでおります。

そこで、BrowserActivityをバックグラウンドで実行して
Webページの先読みを行わせ、特定のボタンが押されたら
BrowserActivityを最前面に表示させるといったことは可能でしょうか?

また、他の方法でWebページの先読みを行えるようでしたら、
その方法についてご教示いただけないでしょうか。

宜しくお願いいたします。

------------------------------------------------------------
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class BrowserActivity extends Activity
{
@Override
public void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );

setContentView( R.layout.browser_main );

WebView webView = (WebView)findViewById( R.id.webview );

webView.setWebViewClient( new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading( WebView view,
String url )
{
view.loadUrl( url );
return true;
}
});
// JavaScriptを有効にしておかないとページを表示できないので有効
にしておく
webView.getSettings().setJavaScriptEnabled( true );

ApplicationSettings settings = new ApplicationSettings( this );

// Webページを読み込む
webView.loadUrl( settings.getStartupUrl() );
}
}
------------------------------------------------------------

yuka2py

unread,
Apr 13, 2011, 7:52:44 AM4/13/11
to android-g...@googlegroups.com

ゆぅかです。こんばんわ。

ご希望の動作とは異なりますが、
よくあるようにプログレスを表示させるというのは、
NG な感じでしょうか?

ゆぅか。

2011/04/13 9:05 "小浦 新市" <ko...@karakuri-ism.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>

するめ

unread,
Apr 13, 2011, 9:07:45 AM4/13/11
to 日本Androidの会
お疲れ様です。するめです。

> そこで、BrowserActivityをバックグラウンドで実行して
> Webページの先読みを行わせ、特定のボタンが押されたら
> BrowserActivityを最前面に表示させるといったことは可能でしょうか?

FrameLayoutとWebViewClientのonPageFinishedで実装できないでしょうか。


以上です。

yuka2py

unread,
Apr 13, 2011, 8:29:33 PM4/13/11
to android-g...@googlegroups.com
ゆぅかです。

ごめんなさい。。

> このActivityに遷移した後に画面全体が真っ白な状態が
> 数秒続くという不具合に悩んでおります。

↑こちらが問題の本質かと思いまして、
ぐるぐるプログレスの方が自然かな?と思ったのですが、
「先読み」が目的であれば、するめさんの方法ですね。

(*´ω`*)

2011年4月13日22:07 するめ <chicchi....@gmail.com>:

小浦 新市

unread,
Apr 14, 2011, 2:59:54 AM4/14/11
to android-g...@googlegroups.com
するめ様

お疲れ様です。小浦です。

> FrameLayoutとWebViewClientのonPageFinishedで実装できないでしょうか。

BrowserActivityのようなWebページ表示用のActivityは用意せずに、
FrameLayoutを使用して一つのActivityで
Webページも表示させるということでしょうか。

上記の方法は一度試しており、確かにWebページの先読みは行えるのですが、
裏でメインのActivityの処理が動作しているせいか、
Webページの動作が重くなってしまうため
別のActivityにWebページを表示させる機能を
切り分けたという経緯がございます。

別ActivityでWebページを表示したときの動作速度には及ばないですが、
WebViewよりも後ろに表示されているビューを非表示にするなどで
Webページの動作速度が改善するようなので、
他にも無駄な処理を行っていないか再度確認したいと思います。

小浦 新市

unread,
Apr 14, 2011, 2:55:46 AM4/14/11
to android-g...@googlegroups.com
ゆぅか様

小浦です。
アドバイスをいただきましてありがとうございます。

現在開発中のアプリではWebページ側でプログレスを表示することがあり、
プログラム側でもプログレスを表示すると
二重にプログレスが表示されてしまう可能性があったため、
プログラム側でプログレスを表示するのは見合わせておりました。

Webページの先読みが難しければプログラム側でのみ
プログレスを表示させることを検討したいと思います。


(2011/04/13 20:52), yuka2py wrote:
> ゆぅかです。こんばんわ。
>
> ご希望の動作とは異なりますが、
> よくあるようにプログレスを表示させるというのは、
> NG な感じでしょうか?
>
> ゆぅか。
>
> 2011/04/13 9:05 "小浦 新市" <ko...@karakuri-ism.com

> <mailto:ko...@karakuri-ism.com>>:

> <mailto:android-g...@googlegroups.com> にメールを送信してください。
> > このグループから退会するには、android-group-
> japan+un...@googlegroups.com
> <mailto:android-group-japan%2Bunsu...@googlegroups.com> にメールを送
> 信してください。
> > 詳細については、http://groups.google.com/group/android-group-
> japan?hl=ja からこのグループにアクセスしてください。


> >
>
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送ら
> れています。
> このグループに投稿するには、android-g...@googlegroups.com にメー
> ルを送信してください。
> このグループから退会するには、android-group-

> japan+un...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。

yuka2py

unread,
Apr 14, 2011, 8:17:15 AM4/14/11
to android-g...@googlegroups.com

ゆぅかです。こんばんわ。

そういうことなんですねー。
では、先に自分で html だけ取得してから、BrowserActivity を start するのは如何でしょうか?
インテントとかで BrowserActivity に html テキストを渡して、WebView に setData (だったかな?) する感じです。
たしか mimetype とbase url とかも指定します。

画像などのロードは後になりますが、html が比較的ちゃんとしてたら、画面真っ白は無さそうに思います(試してないです。すみません)。

もとの Activity で http アクセスする時にぐるぐるまわしてあげたら良さそうです。

試してなくって、しかも html なよってはあまり有効で無いレスですみません。
(*´σー`)

わたしてきにわ、ブラウザの Activity はわけるほうが、
いろいろスッキリしてキレイそうに思ったもなで。
すみません。

あと、でも他にもやりようありそうですね。

ゆぅか。

2011/04/14 16:47 "小浦 新市" <ko...@karakuri-ism.com>:

> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。

> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>

小浦 新市

unread,
Apr 15, 2011, 8:54:38 AM4/15/11
to android-g...@googlegroups.com
ゆぅか様

お世話になっております。小浦です。
再度アドバイスをいただきましてありがとうございます。

ご提案いただきました方法(loadUrlではなくloadDataWithBaseURLを使う)を
試してみたのですが、状況はあまり変わりませんでした。

なかなか上手くいかないものですねえ・・・


(2011/04/14 21:17), yuka2py wrote:
> ゆぅかです。こんばんわ。
>
> そういうことなんですねー。
> では、先に自分で html だけ取得してから、BrowserActivity を start するの
> は如何でしょうか?
> インテントとかで BrowserActivity に html テキストを渡して、WebView に
> setData (だったかな?) する感じです。
> たしか mimetype とbase url とかも指定します。
>
> 画像などのロードは後になりますが、html が比較的ちゃんとしてたら、画面
> 真っ白は無さそうに思います(試してないです。すみません)。
>
> もとの Activity で http アクセスする時にぐるぐるまわしてあげたら良さそう
> です。
>
> 試してなくって、しかも html なよってはあまり有効で無いレスですみません。
> (*´σー`)
>
> わたしてきにわ、ブラウザの Activity はわけるほうが、
> いろいろスッキリしてキレイそうに思ったもなで。
> すみません。
>
> あと、でも他にもやりようありそうですね。
>
> ゆぅか。
>
> 2011/04/14 16:47 "小浦 新市" <ko...@karakuri-ism.com

> <mailto:ko...@karakuri-ism.com>>:


> >
> > ゆぅか様
> >
> > 小浦です。
> > アドバイスをいただきましてありがとうございます。
> >
> > 現在開発中のアプリではWebページ側でプログレスを表示することがあり、
> > プログラム側でもプログレスを表示すると
> > 二重にプログレスが表示されてしまう可能性があったため、
> > プログラム側でプログレスを表示するのは見合わせておりました。
> >
> > Webページの先読みが難しければプログラム側でのみ
> > プログレスを表示させることを検討したいと思います。
> >
> >
> > (2011/04/13 20:52), yuka2py wrote:
> > > ゆぅかです。こんばんわ。
> > >
> > > ご希望の動作とは異なりますが、
> > > よくあるようにプログレスを表示させるというのは、
> > > NG な感じでしょうか?
> > >
> > > ゆぅか。
> > >
> > > 2011/04/13 9:05 "小浦 新市" <ko...@karakuri-ism.com
> <mailto:ko...@karakuri-ism.com>

> > > <mailto:ko...@karakuri-ism.com <mailto:ko...@karakuri-ism.com>>>:

> > > <mailto:android-g...@googlegroups.com

> <mailto:android-g...@googlegroups.com>> にメールを送信してください。
> > > > このグループから退会するには、android-group-
> > > japan+un...@googlegroups.com

> <mailto:japan%2Bunsu...@googlegroups.com>
> > > <mailto:android-group-japan%2Bunsu...@googlegroups.com
> <mailto:android-group-japan%252Buns...@googlegroups.com>> にメールを送


> > > 信してください。
> > > > 詳細については、http://groups.google.com/group/android-group-
> > > japan?hl=ja からこのグループにアクセスしてください。
> > > >
> > >
> > > --
> > > このメールは Google グループのグループ「日本Androidの会」の登録者に送ら
> > > れています。
> > > このグループに投稿するには、android-g...@googlegroups.com

> <mailto:android-g...@googlegroups.com> にメー
> > > ルを送信してください。
> > > このグループから退会するには、android-group-
> > > japan+un...@googlegroups.com
> <mailto:japan%2Bunsu...@googlegroups.com> にメールを送信してください。

Takumu

unread,
Apr 16, 2011, 10:45:28 AM4/16/11
to 日本Androidの会
自分も同様の現象で悩んで出た結果が、ローディング中はローディングアイコンを表示するという方法でした。
言われているような、ページの先読みという対応ではないですが参考までに以下にコード置いてます。
http://mrd.ne.jp/2011/03/viewflipper.html

小浦 新市

unread,
Apr 18, 2011, 6:26:31 AM4/18/11
to android-g...@googlegroups.com
Takumu様

小浦です。

ブログ記事のご紹介ありがとうございます。
ViewFlipperを使ってのローディングアイコンの表示は
実装したことがなかったので大変参考になりました。

Reply all
Reply to author
Forward
0 new messages