WebView grundlegende Nutzung und damit verbundene Funktionen

WebView ist eine Anzeigekomponente Webinhalte einige Online-Inhalte im Netzwerk angezeigt werden können und wie der Inhalt des Web-Browsers blättern verwendet werden, die WebKit verwendet als Rendering-Engine, um Anzeige Webseiten, die Zoom umfassen, führen Sie eine Textsuche, usw. vor und nach Verfahren zur Navigation.

Hinweis : Wenn Sie den Inhalt von Web - Seiten online im WebView angezeigt werden sollen, müssen Sie eine Netzwerkberechtigung in AndroidManifest.xml Datei hinzufügen möchte , finden Sie im Folgenden:

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

Grundsätzliche Verwendung

WebView ist standardmäßig nicht JavaScript aktiviert ist, Fehlerseiten werden ebenfalls ignoriert, wenn auch nur auf der Benutzeroberfläche einige HTML angezeigt werden, das sehr gut sein wird, bevor der Benutzer interagiert mit dem Benutzer der Seite nicht zu lesen braucht sich zu interact nicht brauchen, um mit dem Benutzer, wenn Sie benötigen einen vollständigen Browser, können Sie die entsprechende Absicht aufrufen müssen Sie den Browser, um gewisse Aktionen zu starten, anstatt WebView-Display verwenden, rufen Sie das System-Browser den folgenden Code zu verwenden:

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

WebView hauptsächlich auf zwei Arten verwendet, wie in der Aktivität onCreate () -Methode verwendet, um zu erstellen oder direkt in der Layout-Datei aufgenommen, beziehen sich auf die folgenden:

1. WebView erstellen direkt aus dem Code

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


2. Verwenden Sie WebView in der Layout-Datei

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

So, wie Sie laden wir eine Seite, wenn die Seite lokal ist und wie es zu laden, und wie ein HTML-Fragment laden es, Ladeverfahren häufig verwendet für zwei Haupt, wie folgt:

1. Legen Sie eine ganze Seite

Hier getestet mit Baidu Heim, CSDN Hause, Haus Tencent Test, Test Baidu Homepage, müssen Sie den folgenden Eigenschaften Seiteninhalt einzustellen korrekt angezeigt werden, wenn nicht erscheint in schwarz Einstellung und weiß:

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

CSDN Heimtest, werden Sie aufgefordert mit einem Browser um die Anwendung zu öffnen Sie die Seite zu öffnen, legen Sie die folgenden Eigenschaften, um direkt den Seiteninhalt zu laden:

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

Startseite Inhalt kann direkt testen Tencent Startseite geladen:

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

Testumgebung unterschiedlich sein können, ist das Ergebnis nicht das gleiche.

2. eine lokale HTML-Datei laden

Wo für den Zugriff auf die SD-Karte Manifest.permission.WRITE_EXTERNAL_STORAGE anzuwenden, wenn Laden HTML-Datei auf der SD-Karte finden Sie im folgenden:

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

3. Laden Sie HTML-Schnipsel

Wenn HTML-Fragment Laden, den Zeichensatz zu setzen, sonst wird es auf die folgende verstümmelt werden, siehe:

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

WebView-Schnittstelle Aufbau und Verarbeitung vor allem in den folgenden Bereichen:

  1. Erstellen und Satz WebChromeClient, vor allem sekundäre WebView JavaScript-Dialogfelder, Web-Site-Titel, Ladevorgang zu handhaben und so weiter;
  2. Erstellen und Set WebViewClient, vor allem eine Vielzahl von Veranstaltungen wie Rückruf zur Verfügung zu stellen;
  3. WebSetting Gegenstände können durch eine Vielzahl von WebView bezogenen Attribute, wie die Unterstützung JavaScript, WebView Cachesatz, die Schriftgröße und dergleichen bereitgestellt werden;
  4. Java und JS rufen sie, wie die Verwendung addJavascriptInterface (Object, String) Methode von Java-Objekten WebView injiziert. Diese Methode ermöglicht es Ihnen, Java-Objekte in JavaScript im Kontext der Seite zu injizieren, so können Sie sie durch die Seiten JavaScript zugreifen.

Scaling

Android unterstützt rufen Sie die folgende Methode, um die eingebauten Zoom nach 1,5 zu aktivieren:

WebSettings.setBuiltInZoomControls(boolean)

Hinweis : Einrichten eines integrierten Zoom, Breite und Höhe von WebView ist wrap_content, zu undefinierten Verhalten führen wird, sollte es während des Gebrauchs vermieden werden.

Erstellen Sie Web-Seiten unterschiedliche Rasterdichten zu unterstützen

Rasterdichte basiert auf Bildschirmauflösung niedriger Dichte Bildschirmpixel pro Zoll weniger zur Verfügung, mit hoher Dichte Bildschirme mehr Pixel pro Zoll, ist die Rasterdichte wichtiger, weil andere Faktoren, die die gleichen sind, basierend auf der Pixeldefinition UI-Elemente auf einer großen Bildschirm mit niedriger Dichte, kleine Anzeige auf dem Bildschirm mit höherer Dichte Bildschirm angezeigt; Android-Bildschirm für Komfort in Bezug auf die tatsächlichen Dichte von umfangreicher Rasterdichte: hoch, mittel und niedrig.

Standardmäßig skaliert die WebView Webseite zur Standarddarstellung auf der Bildschirmgröße und die Dichte des gezogenen Spiels, so dass der Bildschirm für hochdichte 1,5-fache Skala (kleinere Pixel) auf dem Bildschirm für niedrige Dichte ist geeignet geeignet ist 0,75-fach zoom (Pixel größer); ab Android 2.0 WebView Unterstützung für DOM, CSS und Meta-Tags zu Hilfe Web-Entwickler das Zielbild anzupassen, basierend auf unterschiedlichen Bildschirmdichten.

Hier sind einige Anweisungen unterschiedliche Rasterdichten zu handhaben:

  1. Window.devicePixelRatio mit Standard Attribute gibt den Stromfaktor Vorrichtung Skalierung, bezieht sich auch auf die einzelnen Pixel auf dem Gerät physikalische Pixel und Einrichtungen (geräteunabhängige Pixel (dips)) -Verhältnis, wenn window.devicePixelRatio 1 ist, dann wird die Vorrichtung in Betracht gezogen werden Dichte (MDPI) -Vorrichtung, und die Standard gilt nicht, wenn Seitenskalierung window.devicePixelRatio Wert das 1,5-fache ist, dann wird die Vorrichtung als eine Vorrichtung mit hoher Dichte (hdpi) bis 1,5-fachen der Inhalt der Seite skaliert werden,; wenn window.devicePixelRatio 0,75, dann wird das Gerät zu sein niedrige Dichte Vorrichtung (LDPI) betrachtet wird, der Inhalt auf die 0,75-fache der ursprünglichen skaliert wird, wie folgt formuliert:

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

physical pixel = dips *  density / 160} (Android)
  1. Verwendung -webkit-device-Pixel-Verhältnis CSS Medienabfrage Rasterdichte angeben Stylesheet, wobei dieser Wert 0,75 sein sollte, 1, 1,5, bzw. die darauf hindeuten, ein Stylesheet auf eine geringe Dichte, mittlere Dichte, hohe Dichte-Projektionsschirmvorrichtung angewandt wird , wie die folgende Erklärung bezieht sich nur hdpi.css Bildschirm Pixeldichteverhältnis von 1,5 für den Bildschirm der Vorrichtung zu zeigen, die für High-Density-Screen-Gerät geeignet ist.
 <link rel="stylesheet" media="screen and (-webkit-device-pixel-ratio:1.5)" href="hdpi.css" />

HTML5-Video-Unterstützung

Wenn die Unterstützung HTML-Video in Ihrer Anwendung, müssen Sie die Hardware-Beschleunigung ermöglichen.

Über die Hardware - Beschleunigung, lesen Sie bitte: Android - Hardware - Beschleunigung

Vollbild-Unterstützung

Um Vollbild, wie Video oder andere HTML-Inhalte zu unterstützen, müssen Sie eine WebChromeClient setzen und implementieren zwei Methoden onShowCustomView (Ansicht, WebChromeClient.CustomViewCallback) und onHideCustomView ():

1. onShowCustomView

Informieren Sie die Anwendung der aktuellen Seite Vollbild-Modus zu gelangen, die Anwendung im Vollbildmodus umfasst Webinhalte, Videos und andere Inhalte in HTML.

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

2. onHideCustomView

Informieren Sie die Anwendung der aktuellen Seite Ausfahrt Vollbild-Modus, muss die Anwendung den Brauch der Ansicht auszublenden.

public void onHideCustomView() {}

Wenn einer dieser Methoden nicht erreicht wird, dann kann die Web-Seite zu der Seite entspricht, nicht in der Vollbild-Modus erreicht werden kann getVideoLoadingProgressView (definiert von einer Ansicht des Videopuffers angezeigt werden).

 public View getVideoLoadingProgressView() {
        return null;
}

HTML5 Geolocation API

Für Android N und die API-Ebene> M Geräte, HTTPS Lage API unterstützt nur Weise wird, wenn in einer Art und Weise nicht-HTTPS-Anfrage Lage API onGeolocationPermissionsShowPrompt (String, GeolocationPermissions.Callback) Methodenaufruf angewandt werden zurückgewiesen.

Layout-Größe

WebView empfohlene Höhe auf einen festen Wert eingestellt ist oder nicht match_parent WRAP_CONTENT empfohlen, wenn die Höhe WebView MATCH_PARENT verwendet, dessen Haupt WRAP_CONTENT sehr praktisches Ergebnis Layout in inkonsistenter Größe Treppe.

Die Höhe des WebView ist auf WRAP_CONTENT Verhalten erscheint wie folgt:

  1. HTML Höhe wird auf einen festen Wert werden, was bedeutet, dass in Bezug auf die Größe der Höhe des HTML-Body-Element kann falsch sein;
  2. Für Anwendungen, bei denen das Gerät Android 4.4 und früher sdk, werden Meta-Tags, um sicherzustellen, Abwärtskompatibilität außer Acht gelassen werden;

Es ist nicht die Verwendung von Layoutbreite WRAP_CONTENT unterstützen. Wenn eine solche Breite wird WebView versuchen, die Breite des übergeordneten Layout zu verwenden.

Sammeln Sie die Daten auf Fehler

Wenn der Benutzer zustimmt, anonym einige Diagnosedaten WebView zu Google hochgeladen werden, werden diese Daten helfen Google WebView zu verbessern, jede initialisierte WebView Anwendung werden diese Daten sammeln, wenn Sie die Funktion in der Liste der Dokumente deaktivieren möchten erforderlich in den folgenden Einstellungen:

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

Referenz Links: WebView offizielle Website

Wenn Sie das Gefühl , dass sie Hilfe haben, können Sie die Rufnummer konzentrieren: jzman-Blog , mit dem Austausch des Lernens.

Ich denke du magst

Origin www.cnblogs.com/jzmanu/p/12585309.html
Empfohlen
Rangfolge