ウェブページを表示してみる
Displaying Web Pages
多くの場合、開発したAndroidアプリケーションは、
ウェブからコンテンツを持ってくることが必要になります。
画像や動画、ウェブページ自体がそうです。
どのように開発するアプリケーションにウェブブラウザを組み込むか、
コンテンツがアプリケーションに元々置かれているかのように、
どのようにウェブからコンテンツを持ってくるかを
以下のコードに示していきます。
以下のようなコード部がactivity_main.xmlファイルにあるとします。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="mmatch_parent"
android:orientation="vertical" >
<WebView
android:id="@+id/WebView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<LinearLayout>
上のコードにあるWebView要素はandroidアクティビティの
ウェブブラウザを定義します。
このWebViewはウェブからコンテンツを持ってきたり、
開発するアプリケーションの中に保存してあるリソースから
コンテンツを引き出すのに使えます。
以下のコードは、どのようにウェブからの画像でWebViewを
ロードするかを示します。
package net.learn2develop.webbrowser;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity Extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = (WebView) findViewById(R.id.WebView01);
webView.setWebViewClient(new Callback());
WebSettings webSettings = webView.getSettings();
webSettings.setBuiltInZoomControls(true);
webView.loadUrl("http://www.android.com/images/whatsnew/jb-new-logo.png");
}
private class Callback extends WebViewClient{
@Override
public boolean shouldOverrideUrlLoading(WebView view,
String url){
return (false);
}
}
}
組込みのズームコントロールを表示するためには、
WebViewからのWebSettingプロパティをまず得る必要があります。
そして、そのプロパティの
setBuiltInZoomControlsメソッドを呼び出します。
ちょっと注釈
Androidデバイスのほとんどはマルチタッチスクリーンを
サポートしていますが、
ビルトインのズームコントロールは、Androidエミュレータで開発した
アプリケーションをテストする時に、
ウェブコンテンツをズームすることに役立ちます。
時折、転送されたページを置くときに、WebViewは、
希望のページをロードするためのウェブブラウザを始動させるよう
アプリケーションに働きかけます。
例えば、もしWebViewに特定のドメインを要求すると、
そのドメインのページを自動的に転送します。
この場合、アプリケーションはウェブページをロードするため
デバイスのウェブブラウザアプリケーションを自動的に開始させます。
ハプニングでこの動作が起きないようにするためには、
WebViewClientクラスと、shouldOverrideUrlLoading()メソッドの
実行が必要になります。
最後に、WebViewを開発するアプリケーションで使うために、
AndroidManifest.xmlファイルにINTERNETパーミッションを
以下のように追加することをわすれないように。
<uses-permission android:name="android.permission.INTERNET" />
Loading from String
ウェブからWebViewのコンテンツをロードし、文字列からもコンテンツを
ロードするには以下の様にします。
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = (WebView) findViewById(R.id.WebView01);
webView.setWebViewClient(new Callvack());
Websettings webSettings = webView.getSettings();
webSettings.setBuiltInZoomControls(true);
//---part 1---
//webView.loadUrl(
"http://www.android.com/images/whatsnew/jb-new-logo.png");
final String mimeType = "text/html";
final String encoding = "UTF-8";
String html =
"<H1>A simple HTML page</H1><body>" +
<p>The quick brown fox jumps over the lazy dog</p></body>
webView.loadDataWithBaseURL("",html, mimeType, encoding, "");
}
上のコード部はloadDataWithBaseURL()メソッドを使って、
HTMLコンテンツを含む文字列でWebViewをロードします。
Loading from an Assets Folder
もしファイルからコンテンツをロードしたい場合には、
開発に使うプロジェクトのassetsフォルダにおそらく配置されています。
ファイルに保存されているコンテンツで、
WebViewでロードもできます。
index.htmlファイルが以下の様になっているとします。
<body>
<h1>A simplt HTML page</h1>
<p>The quick brown fox jumps over the lazy dog</p>
&lf;img src="http://developer.android.com/images/home/market_icon.png" />
</body>
以下のコード部はindex.htmlのコンテンツを使って、
WebViewをロードし、ロードされたコンテンツを表示します。
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = (WebView) findViewById(R.id.WebView01);
webView.setWebViewClient(new Callback());
WebSettings webSettings = webView.getSettings();
webSettings.setVuiltInZoomControls(true);
//---part 1---
//webView.loadUrl(
"http://www.android.com/images/whatsnew/jb-new-logo.png");
//---part 2---
final String mimeType = "text/html"
final String encoding = "UTF-8";
Stringn html =
"<H1>A simple HTML page</H1><body>
<p>The quick brown fox jumps over the lazy dog</p></body>";
//webView.loadDataWithBaseURL("", html, mimeType, encoding, "");
//---part 3---
webView.loadUrl("file:///android/index.html");
}
これで、ファイルのコンテンツを表示するwebViewを作れます。
|
ページ内メニュー
文字列からロードする
アセットフォルダからロードする
【用語解説】
XML
HTMLと同じような言語ですが、
すべての型の複雑なデータ構造を
送信するための設計ができる
ファイル型式。
オブジェクト
ある手続きを持った
データアイテムで、
他の手続きと関連づけされるもの
metaタグ
ウェブページに与える
情報の宣言につかわれ
検索エンジン・ウェブアプリ
などにウェブページの内容を
伝える役目をする。
metaタグの内容は
ページ内に表示されない。
コンストラクタ
オブジェクト指向
プログラミングで使われ
新しいオブジェクトが
作られ時に呼び出される
メソッドのこと。
クラス
オブジェクト指向
プログラミングでの
オブジェクトの型
オブジェクト指向プログラミング
プログラミングの
方式のことで、
プログラマはデータ型を
定義できるだけでなく
自動的にデータ型と
メソッドを関連付け
できる
アクティビティ
Androidにおける
アクティビティは
Androidアプリの画面に
相当するもの
ボタンやウェブページ
など表示されている
すべてのもののこと。
view
Androidのアプリを開発する
上で使う部品のことで、
トリガボタン・イメージボタン
チェックボックスなどのこと。
UI
ユーザインターフェースのこと。
|