English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В документации Api о данном классе大致 говорится, что это класс, который может отображать веб-страницы, например:
webView.loadUrl(http://www.baidu.com/);
Результат отображения:
Можно также загружать некоторые строки html, например:
String str = "<html><body>Вы набрали <b>192</b> очков.</body></html>"; webView.loadData(str, "text/html", null);
Результат отображения:
Через этот компонент можно отображать веб-страницы в вашем Activity или переходить на браузер для отображения веб-страниц. В примере сверху показано, как переходить на браузер телефона для отображения интерфейса Baidu. В методах WebView,介绍的下方,мы будем использовать методы WebView для ограничения отображения веб-страницы в текущем Activity.
下面让我们stepBystep的演示一下WebView的使用。
一、加载网页
1.WebView用来显示网页,使用必须时刻注意我们需要添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
2.在XML布局中添加WebView标签并在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.之后我们就可以通过WebView的loadUrl的方法加载一个网页
webView.loadUrl(http://www.baidu.com/);
4.但是这样加载的网页会跳转到手机浏览器,如何限制网页显示在当前Activity中,需要设置其浏览器模式为false
添加代码如下:
webView = (WebView) findViewById(R.id.main_webview); // Устанавливает клиент WebView webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false;// Возвращает false } }); webView.loadUrl("http://www.baidu.com/");
显示的效果:
这样就简单的加载了一个网页。
WebView还提供了一个抽象类WebSettings来设置其所显示网页的一些基本内容,实例化的方式通过WebView对象的get方法获取
WebSettings webSettings = webView.getSettings();
通过这个类可以设置WebView显示网页的一系列属性
为了查看属性是否生效我特意将WebView显示的网页更换了一下,换成了我们公司的网址,先来看一下不设置一系列属性时显示的网页样式,可以看出界面明显不和手机屏幕适配,很差的用户体验
之后我通过WebSettings类设置了显示出网页的一系列属性
WebSettings webSettings = webView.getSettings(); // Позволяет WebView выполнять JavaScript webSettings.setJavaScriptEnabled(true); // Позволить JavaScript автоматически открывать windows webSettings.setJavaScriptCanOpenWindowsAutomatically(true); // Установить кэш webSettings.setAppCacheEnabled(true); // Установить режим кэширования, всего四种 режима webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); // Установить путь к кэшу // webSettings.setAppCachePath(""); // Поддержка масштабирования (адаптация к текущему экрану) webSettings.setSupportZoom(true); // Установить размер изображения в соответствующий размер webSettings.setUseWideViewPort(true); // Поддержка нового расположения контента, всего四种 способов // По умолчанию это NARROW_COLUMNS webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); // Установить отображение экранных контролей webSettings.setDisplayZoomControls(true); // Установить размер шрифта по умолчанию webSettings.setDefaultFontSize(12);
设置完成之后在看一下运行效果:
Все коды:
Список файлов:最重要的是不要忘记添加网络权限
<?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>
Файл разметки
<?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="Использование 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); // Устанавливает клиент WebView webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false;// Возвращает false } }); WebSettings webSettings = webView.getSettings(); // Позволяет WebView выполнять JavaScript webSettings.setJavaScriptEnabled(true); // Позволить JavaScript автоматически открывать windows webSettings.setJavaScriptCanOpenWindowsAutomatically(true); // Установить кэш webSettings.setAppCacheEnabled(true); // Установить режим кэширования, всего四种 режима webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); // Установить путь к кэшу // webSettings.setAppCachePath(""); // Поддержка масштабирования (адаптация к текущему экрану) webSettings.setSupportZoom(true); // Установить размер изображения в соответствующий размер webSettings.setUseWideViewPort(true); // Поддержка нового расположения контента, всего四种 способов // По умолчанию это NARROW_COLUMNS webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); // Установить отображение экранных контролей webSettings.setDisplayZoomControls(true); // Установить размер шрифта по умолчанию webSettings.setDefaultFontSize(12); webView.loadUrl("http://www.lanou3g.com/"); } }
Второе: загрузка строки html
В некоторых разработках Android можно встретить такую ситуацию, когда детальная страница не просто текст, не просто веб-страница, а данные html, предоставленные нам через интерфейс. В таких данных мы обычно используем способ загрузки через WebView, что использует другой метод WebView
public void loadData(String data, String mimeType, String encoding)
1. Сначала посмотрим, каков вид строки html, чтобы увеличить убедительность и соответствие реальности, мы не создали строку我们自己 (например, в начале примера)而是 вытащили фрагмент контента с новостей на网易 (новости о старшем Гуо и его ученике, сам я очень люблю слушать цыпленины Гуо учитель, потому что выпивать и парить голову)
private String body = "<p> <b>网易娱乐专稿9月7日报道</b>(Составитель: Xiao Yi)" + "Вчера вечером, один из учеников Гуо Дэгун из поколения Хэ написал в微博, что он ранее тайно брал заказы вне Дэ Юнь, покинул Дэ Юнь, " + "из-за стыда два года не связывался с моим наставником Гуо Дэгуном и его женой, я должен был быть выгнан из школы, но я был очень благодарен, что мой наставник Гуо Дэгун не оставил меня в беде." + "Позже Гуо Дэгун переслал этот твит и написал: "Если знаешь, что делаешь ошибку, это уже хорошо". Кроме того,前几天曹云金与何云伟撕郭德纲内幕一事, " + "Конфликты между Гуо Дэгуном и его учениками, которые должны были завершиться, если так пойдет,恐怕难以彻底解决。</p><p> <b>Оригинал微博 Хэ Хао: " + "</b></p><p> В 2006 году был зачислен в Хэ-цзюнь и получил имя Хэ Хао, 13 июня 2009 года я был принят в ученики господина Гуо Дэгун, моего наставника." + "в течение нескольких лет питался, жил и учился в базе Дэ Юнь, мой наставник и его жена не взяли ни цента. В 2010 году, когда я женился, мой наставник и его жена подарили мне и моей жене红包 и обручальные кольца, " + "и предоставил нам жилое помещение на базе Дэ Юнь. В сентябре 2014 года, по личным причинам, я тайно уехал на развитие за пределы. Позже вернулся в Пекин и стыдился встретиться с моим наставником, " + "Два года не смел встречаться с моим наставником. Позже переехал в Шанхай для развития, в июне 2016 года, во время выступления моего наставника в Шанхае, я, наконец, собрался с духом и признался в своих ошибках, " + "Мой наставник был великодушен и простил меня. Через два месяца, вернувшись в Пекин, я专门去家里看望师娘,并获得了原谅。Из-за ошибок, совершенных Хэ Хао, " + "Этот случай мог бы привести к "чистке", во время ремонта родословной семьи Дэ Юнь, благодаря милосердию моего наставника, я был оставлен для наблюдения, что было как бы открытием лица ученика." + "Преступник鹤晓感念恩师的教诲之恩、不弃之情。鹤晓虽距京城数千之遥,定当永远心系德云。" +} "Не могу забыть наставления моего учителя, быть честным в искусстве, быть хорошим человеком! Пожелайте вашему учителю и учительнице здоровья! Пupil鹤晓远拜!</p>";
2. Установите по умолчанию кодировку символов, в Android обычно используется UTF-8
WebSettings webSettings = webView.getSettings(); webSettings.setDefaultTextEncodingName("UTF-8");
3. После этого вызывается метод loadData WebView
webView.loadData(body, "text/html; charset=UTF-8", null);
Показ результатов:
Ниже приведен весь код, макет продолжает использовать (загрузка веб-страницы), часть кода также не изменилась, см. подробнее:
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>网易娱乐专稿9月7日报道</b>(Составитель: Xiao Yi)" + "Вчера вечером, один из учеников Гуо Дэгун из поколения Хэ написал в微博, что он ранее тайно брал заказы вне Дэ Юнь, покинул Дэ Юнь, " + "из-за стыда два года не связывался с моим наставником Гуо Дэгуном и его женой, я должен был быть выгнан из школы, но я был очень благодарен, что мой наставник Гуо Дэгун не оставил меня в беде." + "Позже Гуо Дэгун переслал этот твит и написал: "Если знаешь, что делаешь ошибку, это уже хорошо". Кроме того,前几天曹云金与何云伟撕郭德纲内幕一事, " + "Конфликты между Гуо Дэгуном и его учениками, которые должны были завершиться, если так пойдет,恐怕难以彻底解决。</p><p> <b>Оригинал微博 Хэ Хао: " + "</b></p><p> В 2006 году был зачислен в Хэ-цзюнь и получил имя Хэ Хао, 13 июня 2009 года я был принят в ученики господина Гуо Дэгун, моего наставника." + "в течение нескольких лет питался, жил и учился в базе Дэ Юнь, мой наставник и его жена не взяли ни цента. В 2010 году, когда я женился, мой наставник и его жена подарили мне и моей жене红包 и обручальные кольца, " + "и предоставил нам жилое помещение на базе Дэ Юнь. В сентябре 2014 года, по личным причинам, я тайно уехал на развитие за пределы. Позже вернулся в Пекин и стыдился встретиться с моим наставником, " + "Два года не смел встречаться с моим наставником. Позже переехал в Шанхай для развития, в июне 2016 года, во время выступления моего наставника в Шанхае, я, наконец, собрался с духом и признался в своих ошибках, " + "Мой наставник был великодушен и простил меня. Через два месяца, вернувшись в Пекин, я专门去家里看望师娘,并获得了原谅。Из-за ошибок, совершенных Хэ Хао, " + "Этот случай мог бы привести к "чистке", во время ремонта родословной семьи Дэ Юнь, благодаря милосердию моего наставника, я был оставлен для наблюдения, что было как бы открытием лица ученика." + "Преступник鹤晓感念恩师的教诲之恩、不弃之情。鹤晓虽距京城数千之遥,定当永远心系德云。" +} "Не могу забыть наставления моего учителя, быть честным в искусстве, быть хорошим человеком! Пожелайте вашему учителю и учительнице здоровья! Пupil鹤晓远拜!</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); } }
Указанные выше методы использования компонентов WebView для загрузки веб-страниц и данных в Android,介绍的由小编给大家,希望对大家有所帮助。Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий, и я отвечу вам вовремя. В этом я также очень благодарен всем за поддержку сайта呐喊教程!
Заявление: содержание этой статьи взято из Интернета, авторские права принадлежат соответствующему автору, материал предоставлен пользователями Интернета, сайт не обладает правами собственности, материал не был отредактирован вручную, и сайт не несет ответственности за связанные с этим法律责任. Если вы обнаружите подозрительное нарушение авторских прав, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (при отправке письма замените # на @) для сообщения о нарушении и предоставьте соответствующие доказательства. Если подтвердится, сайт немедленно удаляет涉嫌侵权的内容.