WebViewの基本的な使用と関連する機能

WebViewの前と後などのテキスト検索を実行し、表示コンポーネントWebコンテンツをネットワーク上のいくつかのオンラインコンテンツを表示することができ、ズームなどが表示WebページへのレンダリングエンジンとしてWebKitの使用するWebブラウザのスクロールの内容として使用することができていますナビゲーションの方法。

:あなたはWebViewのオンラインのウェブページの内容を表示したい場合は、以下を参照して、AndroidManifest.xmlファイルにネットワークのアクセス許可を追加する必要があります。

<uses-permission android:name="android.permission.INTERNET" />

基本的な使い方

UI上のいくつかのHTMLを表示する場合にのみ、WebViewのは、デフォルトのJavaScriptで有効になっていません、エラーページは、ユーザーとユーザーの相互作用は、ユーザーと対話する必要はありませんページを読む必要はありません前に、これがあれば、非常に良いだろう、無視されますあなたは、むしろ表示にWebViewのを使用するよりも、特定のアクションを実行するためにブラウザを起動するために、適切な意思を呼び出して、次のコードを使用するには、システムブラウザを呼び出す必要があり、フルブラウザが必要です。

Uri uri = Uri.parse("https://www.example.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
 

主活動のonCreate()メソッドのように2つの方法で使用されるWebViewの作成に使用されるか、または直接、レイアウトファイルに組み込まれ、下記を参照してください。

コードから直接のWebViewを作成します。1.

WebView webview = new WebView(this);
//这里将整个 Activity 窗口作为 WebView 的显示界面,也可单独放在某个布局中
setContentView(webview);


レイアウトファイルで2.のWebView

<WebView
    android:id="@+id/webView"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</WebView>

ページがそれをロードする方法、およびそれは、積載方法は、一般的に、などの主要な次の2のために使用されるHTMLフラグメントをロードする方法ローカルであるとあれば、どのように我々は、ページをロードします:

全ページをロード1

黒と白で表示され設定されていない場合ここではBaiduのホーム、CSDNホーム、ホームテンセントテスト、テストBaiduのホーム・ページを使用してテストし、あなたは、正しく表示される以下のプロパティページの内容を設定する必要があります。

webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webView.loadUrl("https://www.baidu.com");

CSDNホームテストは、あなたがページを開くには、ブラウザでアプリケーションを開くように求めるメッセージが表示されます、直接ページのコンテンツをロードするために、次のプロパティを設定します。

webView.setWebViewClient(new WebViewClient());
webView.loadUrl("http://blog.csdn.net");

ホームコンテンツは、テンセントホームをテストする直接ロードすることができます。

webView.loadUrl("http://www.qq.com");

テスト環境は異なっていてもよく、結果は同じではありません。

ローカルのHTMLファイルを読み込む2.

どこで、下記を参照してくださいSDカードにSDカードManifest.permission.WRITE_EXTERNAL_STORAGE時にロードするHTMLファイルにアクセスするために適用するには:

//加载 assets 目录下的 HTML 文件
webView.loadUrl("file:///android_asset/mine.html");
//加载 SD 卡上的 HTML 文件
webView.loadUrl("file:///"+Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator+"mine.html");

3.ロードHTMLスニペット

文字セットを設定するには、HTMLの断片ロードする場合、そうでない場合は、以下を参照してください、文字化けされます。

//加载 HTML 片段,设置字符集防止乱码出现
webView.loadData(Util.getHtmlData(),"text/html; charset=UTF-8",null);

WebViewのインターフェイスの設定と、次の分野で主に処理します:

  1. 作成し、セットWebChromeClient、主に二次JavaScriptのダイアログボックスを処理するためのWebView、ウェブサイトのタイトル、ロードの進行状況など。
  2. 主なコールバックなど様々なイベントを提供するために、WebViewClientを作成し、設定。
  3. WebSettingオブジェクトは、サポートのJavaScript、WebViewのキャッシュセット、フォントサイズなどの属性を、関連のWebViewの種々によって提供されてもよいです。
  4. JavaとJSは、Javaの使用addJavascriptInterface(オブジェクト、String)メソッドのように、お互いを呼び出す注入WebViewのオブジェクト。この方法は、あなたがページのJavaScriptを介してそれらにアクセスすることができ、あなたはJavaはページのコンテキストでJavaScriptにオブジェクトを注入することができます。

スケーリング

Androidのサポートは1.5の後、内蔵ズームを有効にするには、次のメソッドを呼び出します。

WebSettings.setBuiltInZoomControls(boolean)

:内蔵のズーム、幅と高さのWebViewのwrap_contentを設定すると、未定義の動作につながる、それは使用中に避けるべきです。

異なる画面密度をサポートするために、Webページを構築します

他の要因は、画素定義に基づいて、同じであるので、画面密度は画面解像度に基づいており、より少ない利用可能なインチ当たり低密度画面の画素は、インチあたりのピクセル利用可能な高密度のスクリーンは、スクリーンの密度は、より重要ですUI要素は、大画面、低密度、画面上の小さな表示高密度画面上に表示、より広範な画面密度の実際の密度の点で利便性のためにAndroidの画面を高、中、低を。

デフォルトでは、WebViewの画面が低密度に適した画面上の高密度1.5倍スケール(小さい画素)のために適しているので、画面サイズと描画された一致の密度にデフォルトの外観にウェブページをスケーリング0.75倍は(大きなピクセル)、ズーム、さまざまな画面密度に基づいてターゲットスクリーンを適応させるために、ヘルプWeb開発者にDOM、CSSやメタタグのためのAndroid 2.0のWebViewのサポートから始まります。

ここではさまざまな画面密度を処理するためのいくつかの手順は以下のとおりです。

  1. デフォルト属性を使用Window.devicePixelRatioはまた、現在のデバイスの伸縮率を指定window.devicePixelRatioが1である場合、物理的画素とデバイス(デバイス非依存ピクセル(ディップ))比は、そのデバイスがあると考えられているデバイス上の個々の画素を指し密度(MDPI)装置、デフォルトはwindow.devicePixelRatio値が1.5倍あればページをスケーリングは適用されない場合、デバイスは、ページの1.5倍の内容にスケーリング高密度デバイス(hdpi)であると考えられる。window.devicePixelRatio場合次のように0.75は、次いで、デバイスは、コンテンツは、0.75倍にスケーリング処方される低密度デバイス(LDPI)であると考えられています。

window.devicePixelRatio(dpr) = physical pixel / dips(css pixel)}

physical pixel = dips *  density / 160} (Android)
  1. 使用する値がスタイルシートを低密度に適用されていることを示し、それぞれ0.75、1、1.5、、、中密度、高密度のスクリーン装置でなければならないスタイルシートの密度を指定するCSSメディアクエリスクリーンデバイスピクセル比を-webkit次のステートメントは、高密度のスクリーン装置に適している装置の画面1.5のhdpi.cssスクリーンピクセル密度比を示すためにのみ適用されます。
 <link rel="stylesheet" media="screen and (-webkit-device-pixel-ratio:1.5)" href="hdpi.css" />

HTML5ビデオのサポート

アプリケーションでサポートHTMLビデオの場合は、ハードウェアアクセラレーションを有効にする必要があります。

:ハードウェアアクセラレーションについては、以下を参照してくださいAndroidのハードウェアアクセラレーション

フルスクリーンのサポート

ビデオや他のHTMLコンテンツとして、フルスクリーンをサポートするためには、WebChromeClientを設定し、二つの方法onShowCustomView(ビュー、WebChromeClient.CustomViewCallback)とonHideCustomView()を実装する必要があります。

1. onShowCustomView

フルスクリーンモードに入るように、現在のページのアプリケーションに通知し、フルスクリーンモードでのアプリケーションは、Webコンテンツ、ビデオ、およびHTML内の他のコンテンツを含んでいます。

/**
 * @param view 显示的View.
 * @param callback 调用当前页退出当前页
 * full screen mode.
 */
public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) {};

2. onHideCustomView

現在のページ出口フルスクリーンモードのアプリケーションに通知し、アプリケーションは、ビューのカスタムを非表示にする必要があります。

public void onHideCustomView() {}

これらの方法のいずれかが達成されない場合、そのページに対応するWebページがフルスクリーンモードに入ることができないgetVideoLoadingProgressView(表示されるビデオバッファの観点から定義)を達成することができます。

 public View getVideoLoadingProgressView() {
        return null;
}

HTML5ジオロケーションAPI

方法の非HTTPS要求の位置API onGeolocationPermissionsShowPrompt(文字列、GeolocationPermissions.Callback)メソッドの呼び出しに適用された場合のAndroid NとAPIレベル> Mのデバイス、HTTPSの位置は、APIがサポートする唯一の方法は、拒否されます。

レイアウトサイズ

WebViewのは、高さが固定値に設定されている又は高さのWebViewはMATCH_PARENT、親WRAP_CONTENT矛盾サイズの階段で実用性の高いレイアウト結果を使用している場合、match_parent WRAP_CONTENT推奨されていないお勧めします。

WebViewのの高さは、次のように表示されますWRAP_CONTENTの動作に設定されます。

  1. HTMLの高さは、HTML BODY要素の高さの寸法に対しては正しくない可能性があることを意味固定値になるように設定されています。
  2. デバイスは、Android 4.4およびそれ以前のSDKであるアプリケーションでは、メタタグは、下位互換性を確保するために無視されます。

それはWRAP_CONTENT幅レイアウトの使用をサポートしていません。こうした幅場合は、WebViewのは親のレイアウトの幅を使用しようとします。

エラー時に収集するデータ

ユーザーが同意した場合、いくつかの診断データのWebViewは匿名でGoogleにアップロードされますが、これらのデータは、GoogleがWebViewのを改善しましょう必要な書類のリストで機能を無効にしたい場合は、それぞれの初期化のWebViewアプリケーションは、これらのデータを収集します以下の設定で:

 <meta-data 
    android:name="android.webkit.WebView.MetricsOptOut"
    android:value="true" />

参考リンク:WebViewの公式サイト

あなたは、彼らが助けに持っていると感じた場合は、公共の数を集中することができます:jzman-ブログを、学習の交換をして。

おすすめ

転載: www.cnblogs.com/jzmanu/p/12585309.html