Android - WebView
WebView è una vista che mostra le pagine web all'interno dell'applicazione. È inoltre possibile specificare una stringa HTML e visualizzarla all'interno dell'applicazione utilizzando WebView. WebView trasforma la tua applicazione in un'applicazione web.
Per aggiungere WebView alla tua applicazione, devi aggiungere <WebView>elemento al tuo file di layout xml. La sua sintassi è la seguente:
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
Per utilizzarlo, devi ottenere un riferimento di questa vista nel file Java. Per ottenere un riferimento, creare un oggetto della classe WebView. La sua sintassi è:
WebView browser = (WebView) findViewById(R.id.webview);
Per caricare un URL Web in WebView, è necessario chiamare un metodo loadUrl(String url)della classe WebView, specificando l'URL richiesto. La sua sintassi è:
browser.loadUrl("http://www.tutorialspoint.com");
Oltre al solo caricamento dell'URL, puoi avere un maggiore controllo sul tuo WebView utilizzando i metodi definiti nella classe WebView. Sono elencati come segue:
Suor n | Metodo e descrizione |
---|---|
1 | canGoBack() Questo metodo specifica che WebView ha un elemento della cronologia precedente. |
2 | canGoForward() Questo metodo specifica che WebView dispone di un elemento della cronologia di inoltro. |
3 | clearHistory() Questo metodo cancellerà la cronologia avanti e indietro di WebView. |
4 | destroy() Questo metodo distrugge lo stato interno di WebView. |
5 | findAllAsync(String find) Questo metodo trova tutte le istanze di stringa e le evidenzia. |
6 | getProgress() Questo metodo ottiene lo stato di avanzamento della pagina corrente. |
7 | getTitle() Questo metodo restituisce il titolo della pagina corrente. |
8 | getUrl() Questo metodo restituisce l'URL della pagina corrente. |
Se fai clic su qualsiasi collegamento all'interno della pagina web del WebView, quella pagina non verrà caricata all'interno del tuo WebView. Per farlo devi estendere la tua classe daWebViewCliente sovrascrivi il suo metodo. La sua sintassi è:
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
Esempio
Ecco un esempio che mostra l'uso di WebView Layout. Crea un'applicazione web di base che ti chiederà di specificare un URL e caricherà questo sito web con URL nel WebView.
Per sperimentare questo esempio, è necessario eseguirlo su un dispositivo effettivo su cui è in esecuzione Internet.
Passi | Descrizione |
---|---|
1 | Utilizzerai Android Studio per creare un'applicazione Android con un pacchetto com.example.sairamkrishna.myapplication. |
2 | Modifica il file src / MainActivity.java per aggiungere il codice WebView. |
3 | Modifica res / layout / activity_main per aggiungere i rispettivi componenti XML |
4 | Modifica il file AndroidManifest.xml per aggiungere le autorizzazioni necessarie |
5 | Esegui l'applicazione e scegli un dispositivo Android in esecuzione, installa l'applicazione su di esso e verifica i risultati. |
Di seguito è riportato il contenuto del file di attività principale modificato src/MainActivity.java.
package com.example.sairamkrishna.myapplication;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
Button b1;
EditText ed1;
private WebView wv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1=(Button)findViewById(R.id.button);
ed1=(EditText)findViewById(R.id.editText);
wv1=(WebView)findViewById(R.id.webView);
wv1.setWebViewClient(new MyBrowser());
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String url = ed1.getText().toString();
wv1.getSettings().setLoadsImagesAutomatically(true);
wv1.getSettings().setJavaScriptEnabled(true);
wv1.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
wv1.loadUrl(url);
}
});
}
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
Di seguito è riportato il contenuto modificato del file xml res/layout/activity_main.xml.
Nel codice seguente abc indica il logo di tutorialspoint.com
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView android:text="WebView" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textview"
android:textSize="35dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point"
android:id="@+id/textView"
android:layout_below="@+id/textview"
android:layout_centerHorizontal="true"
android:textColor="#ff7aff24"
android:textSize="35dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:hint="Enter Text"
android:focusable="true"
android:textColorHighlight="#ff7eff15"
android:textColorHint="#ffff25e6"
android:layout_marginTop="46dp"
android:layout_below="@+id/imageView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignRight="@+id/imageView"
android:layout_alignEnd="@+id/imageView" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/abc"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enter"
android:id="@+id/button"
android:layout_alignTop="@+id/editText"
android:layout_toRightOf="@+id/imageView"
android:layout_toEndOf="@+id/imageView" />
<WebView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/webView"
android:layout_below="@+id/button"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true" />
</RelativeLayout>
Di seguito è riportato il contenuto del file res/values/string.xml.
<resources>
<string name="app_name">My Application</string>
</resources>
Di seguito è riportato il contenuto di AndroidManifest.xml file.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sairamkrishna.myapplication" >
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Proviamo a eseguire la tua applicazione WebView. Per eseguire l'app da Android Studio, apri uno dei file di attività del tuo progetto e fai clic
Ora basta specificare un URL nel campo URL e premere il pulsante di navigazione che appare, per avviare il sito web. Ma prima assicurati di essere connesso a Internet. Dopo aver premuto il pulsante, apparirà la seguente schermata:
Nota. Cambiando semplicemente l'URL nel campo dell'URL, la WebView aprirà il sito Web desiderato.
L'immagine sopra mostra la visualizzazione web di tutorialspoint.com