English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Método de carregamento de páginas da web e dados usando componentes nativos WebView no Android

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.)

Você também pode gostar