English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
The introduction of this class in the Api is roughly that it is a view that can display web pages, such as:
webView.loadUrl(http://www.baidu.com/);
resultado de exibição:
you can also load some html strings, such as:
String str = "<html><body>You scored <b>192</b> pontos.</body></html>"; webView.loadData(str, "text/html", null);
resultado de exibição:
aqui, através deste componente, podemos exibir uma página da web no nosso Activity ou saltar para o navegador para exibir a página da web. O exemplo acima mostra o salto para o navegador do telefone para exibir a interface do百度. Em breve, na introdução dos métodos do WebView, usaremos métodos do WebView para limitar a exibição da página da web no Activity atual.
vamos demonstrar passo a passo o uso do WebView.
1. Carregar página da web
1.WebView é usado para exibir páginas da web, ao usar, deve sempre prestar atenção a que precisamos adicionar permissão de rede
<uses-permission android:name="android.permission.INTERNET"/>
2.adicione a tag WebView no layout XML e instancie em Activity
<WebView android:id="@"+id/main_webview" android:layout_width="match_parent" android:layout_height="match_parent"/> webView = (WebView) findViewById(R.id.main_webview);
3.após isso, podemos carregar uma página da web através do método loadUrl do WebView
webView.loadUrl(http://www.baidu.com/);
4.mas a página da web carregada assim saltará para o navegador do telefone, como limitar a exibição da página da web no Activity atual, é necessário configurar o modo do navegador como falso
adicione o código a seguir:
webView = (WebView) findViewById(R.id.main_webview); // definir o cliente WebView webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false;// Retornar false } }); webView.loadUrl("http://www.baidu.com/");
efeito de exibição:
assim, carregamos uma página da web de forma simples
WebView também fornece uma classe abstrata WebSettings para configurar alguns conteúdos básicos da página da web que ele exibe, a instância é obtida através do método get do objeto WebView
WebSettings webSettings = webView.getSettings();
a classe esta pode configurar uma série de atributos de exibição da página da web do WebView
para verificar se os atributos estão funcionando, especialmente troquei a página da web exibida pelo WebView, para o site da nossa empresa, vamos primeiro ver o estilo da página da web exibida sem configurar uma série de atributos, podemos ver que a interface não se adapta ao telefone, uma má experiência do usuário
depois, eu configurei uma série de atributos de exibição da página da web através da classe WebSettings
WebSettings webSettings = webView.getSettings(); // Permitir que o WebView execute JavaScript webSettings.setJavaScriptEnabled(true); // Permitir que o JavaScript abra janelas automaticamente Permitir que o JavaScript abra janelas automaticamente // webSettings.setAppCacheEnabled(true); Definir o cache // webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); Definir o modo de cache, há quatro modos // Definir o caminho do cache // webSettings.setAppCachePath(""); // Suporta zoom (compatível com a tela atual) webSettings.setSupportZoom(true); // Ajustar o tamanho das imagens para o tamanho apropriado webSettings.setUseWideViewPort(true); // Suporta reorganização de conteúdo, há quatro maneiras // O padrão é NARROW_COLUMNS webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); // Definir o controle de zoom visível na tela webSettings.setDisplayZoomControls(true); // Definir o tamanho da fonte padrão webSettings.setDefaultFontSize(12);
após a configuração, vamos ver o efeito de execução:
todo o código:
arquivo de lista: a coisa mais importante é não esquecer de adicionar permissão de rede
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.wu.webviewdemo"> <uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
arquivo de layout
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#000" android:gravity="center" android:paddingBottom=""10dp" android:paddingTop=""10dp" android:text="usar WebView" android:textAllCaps="false" android:textColor="#fff" /> <WebView android:id="@"+id/main_webview" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
Activity
package com.wu.webviewdemo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends AppCompatActivity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = (WebView) findViewById(R.id.main_webview); // definir o cliente WebView webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false;// Retornar false } }); WebSettings webSettings = webView.getSettings(); // Permitir que o WebView execute JavaScript webSettings.setJavaScriptEnabled(true); // Permitir que o JavaScript abra janelas automaticamente Permitir que o JavaScript abra janelas automaticamente // webSettings.setAppCacheEnabled(true); Definir o cache // webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); Definir o modo de cache, há quatro modos // Definir o caminho do cache // webSettings.setAppCachePath(""); // Suporta zoom (compatível com a tela atual) webSettings.setSupportZoom(true); // Ajustar o tamanho das imagens para o tamanho apropriado webSettings.setUseWideViewPort(true); // Suporta reorganização de conteúdo, há quatro maneiras // O padrão é NARROW_COLUMNS webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); // Definir o controle de zoom visível na tela webSettings.setDisplayZoomControls(true); // Definir o tamanho da fonte padrão webSettings.setDefaultFontSize(12); webView.loadUrl("http://www.lanou3g.com/"); } }
II. Carregar string html
Em alguns desenvolvedimentos Android, podemos encontrar uma situação assim, onde a exibição da página de detalhes não é apenas texto simples, nem uma simples página da web, mas dados html prontos fornecidos por uma interface. Quando encontramos esses dados, a maneira comum que usamos é carregar através do WebView, o que utiliza outro método do WebView
public void loadData(String data, String mimeType, String encoding)
1.Primeiro, vamos ver como é a string html. Para aumentar a persuasão e manter a realidade, não criei uma string (como no exemplo inicial) mas tirei um trecho de uma notícia do网易 (notícia sobre o Lao Guo e seu aprendiz, eu gosto muito de ouvir os stand-up comedy do mestre Guo, afinal, beber e lavar o cabelo com álcool é uma tradição)
private String body = "<p> <b>Artigo exclusivo da Yee Entertainment9mes7relatou</b>(Texto/pequeno) + "Hoje de manhã, o discípulo da escola de Hè, na rede social Weibo, expressou sua lealdade à De Yun Society, afirmando que antes ele tomava trabalhos ilegalmente fora da De Yun Society," + "Devido à vergonha de não ter contactado meu mestre Gao De Gang e a madrasta há dois anos, eu devia ter sido expulso da escola, mas fui perdoado pelo mestre Gao De Gang que não me abandonou." + "Em seguida, Gao De Gang retweetou o微博 e escreveu "Saber errar e melhorar é o melhor.", juntamente com o caso recente de Cao Yunjin e He Yunwei discutindo os bastidores de Gao De Gang", + "Os vários conflitos entre Gao De Gang e seus discípulos que deveriam ser encerrados não podem ser completamente resolvidos se continuarem assim.</p><p> <b>Texto original do Weibo de Han He Xiao:" + "</b></p><p> 2006ano, entrei na escola de Hè e fui nomeado Hè Xiao,2009ano6mes13 + "Durante esses anos, comi, morri e aprendi arte na base De Yun, e o mestre e a madrasta não tomaram um centavo.",2010 + "e forneceu uma casa de casamento para nós na base De Yun.",2014ano9mes, devido a razões pessoais, fui a um lugar remoto para desenvolver. Depois de retornar a Pequim, senti vergonha de enfrentar meu mestre", + "Dois anos sem ousar ver meu mestre. Depois de me desenvolver em Shanghai,2016ano6Durante a turnê de Shanghai do mestre, finalmente tive a coragem de confessar meu erro ao mestre", + "O mestre generoso me perdoou. No momento de retornar a Pequim após dois meses, visitei especialmente a casa da minha madrasta e pedi perdão. Por causa dos erros cometidos por Xue Xiao", + "O suficiente para levar a um 'Qingmen', enquanto se reescrevia o genealogia da família Deyun, graças ao não abandono do mestre, foi concedido 'provisoriamente observado', que foi um olho de boas-vindas para o discípulo." + "O discípulo Hè Xiaogao está grato pelo ensinamento e pela paciência do mestre. Apesar de estar a milhas de distância de Pequim, ele sempre manterá o coração ligado ao Deyun." + "Não posso esquecer as ensinamentos sábios do meu mestre, fazer arte com seriedade, ser uma boa pessoa! Que o corpo do mestre e da mãe do mestre estejam em boa saúde! O discípulo Hè Xiaogao reverencia distante!"/p>";
2.Defina um código de caracteres padrão, o UTF-8 é amplamente usado no Android.-8
WebSettings webSettings = webView.getSettings(); webSettings.setDefaultTextEncodingName("UTF-8");
3.A seguir, chama o método loadData do WebView
webView.loadData(body, "text/html; charset=UTF-8", null);
O efeito de exibição é o seguinte:
Aqui está todo o código, o layout continua a usar (Carregar página web), e a parte do código não mudou muito, conforme segue:
package com.wu.webviewdemo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends AppCompatActivity { private WebView webView; private String body = "<p> <b>Artigo exclusivo da Yee Entertainment9mes7relatou</b>(Texto/pequeno) + "Hoje de manhã, o discípulo da escola de Hè, na rede social Weibo, expressou sua lealdade à De Yun Society, afirmando que antes ele tomava trabalhos ilegalmente fora da De Yun Society," + "Devido à vergonha de não ter contactado meu mestre Gao De Gang e a madrasta há dois anos, eu devia ter sido expulso da escola, mas fui perdoado pelo mestre Gao De Gang que não me abandonou." + "Em seguida, Gao De Gang retweetou o微博 e escreveu "Saber errar e melhorar é o melhor.", juntamente com o caso recente de Cao Yunjin e He Yunwei discutindo os bastidores de Gao De Gang", + "Os vários conflitos entre Gao De Gang e seus discípulos que deveriam ser encerrados não podem ser completamente resolvidos se continuarem assim.</p><p> <b>Texto original do Weibo de Han He Xiao:" + "</b></p><p> 2006ano, entrei na escola de Hè e fui nomeado Hè Xiao,2009ano6mes13 + "Durante esses anos, comi, morri e aprendi arte na base De Yun, e o mestre e a madrasta não tomaram um centavo.",2010 + "e forneceu uma casa de casamento para nós na base De Yun.",2014ano9mes, devido a razões pessoais, fui a um lugar remoto para desenvolver. Depois de retornar a Pequim, senti vergonha de enfrentar meu mestre", + "Dois anos sem ousar ver meu mestre. Depois de me desenvolver em Shanghai,2016ano6Durante a turnê de Shanghai do mestre, finalmente tive a coragem de confessar meu erro ao mestre", + "O mestre generoso me perdoou. No momento de retornar a Pequim após dois meses, visitei especialmente a casa da minha madrasta e pedi perdão. Por causa dos erros cometidos por Xue Xiao", + "O suficiente para levar a um 'Qingmen', enquanto se reescrevia o genealogia da família Deyun, graças ao não abandono do mestre, foi concedido 'provisoriamente observado', que foi um olho de boas-vindas para o discípulo." + "O discípulo Hè Xiaogao está grato pelo ensinamento e pela paciência do mestre. Apesar de estar a milhas de distância de Pequim, ele sempre manterá o coração ligado ao Deyun." + "Não posso esquecer as ensinamentos sábios do meu mestre, fazer arte com seriedade, ser uma boa pessoa! Que o corpo do mestre e da mãe do mestre estejam em boa saúde! O discípulo Hè Xiaogao reverencia distante!"/p>"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = (WebView) findViewById(R.id.main_webview); WebSettings webSettings = webView.getSettings(); webSettings.setDefaultTextEncodingName("UTF-8"); webView.loadData(body, "text/html; charset=UTF-8", null); } }
O que foi mencionado acima é o método que o editor introduziu para usar componentes nativos WebView para carregar páginas e dados no Android, esperando ajudar a todos. Se você tiver alguma dúvida, por favor, deixe um comentário, o editor responderá a tempo. Agradecemos muito o apoio do site Tutorial de Grito!
Declaração: O conteúdo deste artigo é extraído da Internet, pertencente ao respectivo detentor dos direitos autorais, upload feito voluntariamente pelos usuários da Internet, o site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidades legais relevantes. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#oldtoolbag.com (ao enviar e-mail, substitua # por @ para denunciar e forneça provas relevantes. Apenas após verificação, o site deletará o conteúdo suspeito de violação de direitos autorais.)