#java #android #webview #progress-bar
#java #Android #webview #индикатор выполнения
Вопрос:
Я довольно новичок в разработке приложений для Android. По сути, я создаю шаблон webview для отображения разных URL-адресов, где веб-сайты оптимизированы для мобильных устройств.
В приложении есть две страницы:
1 заставка.
1 страница веб-просмотра.
Я проработал несколько руководств, и эта часть действительно работает, так что проблема в том…
Я хочу показать индикатор выполнения, когда webview загружает веб-сайт, который затем исчезает, когда веб-сайты были загружены.
Я предпринял множество попыток заставить это работать, но безуспешно.
Файл XML:
В принципе, есть webview с ID:
и индикатор выполнения с ID:progressbar
(не уверен, что это должно быть там)
Ответ №1:
Вы забыли добавить ProgressBar
поддержку.
Добавьте приведенную ниже инструкцию перед setContentView(R.layout.layout_file)
;
// Adds Progrss bar Support
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
Затем после вызова setContentView(R.layout.layout_file);
добавьте эту строку, чтобы сделать progressbar видимым
// Makes Progress bar Visible
getWindow().setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);
Теперь внутри onProgressChanged(WebView view, int progress)
вам нужно добавить следующие строки :
//Make the bar disappear after URL is loaded, and changes string to Loading...
MyActivity.setTitle("Loading...");
MyActivity.setProgress(progress * 100); //Make the bar disappear after URL is loaded
// Return the app name after finish loading
if(progress == 100)
MyActivity.setTitle(R.string.app_name);
Вы можете ознакомиться с полным руководством здесь: ProgressBar в WebView. Я ссылался только на код с этого веб-сайта.
Редактировать
Другой пример из официальных документов Android WebView
Комментарии:
1. Может быть, я просто глуп, но я действительно не могу заставить это работать. Возможно ли, что вы можете создать рабочий Java-файл? Есть ли что-то, что мне нужно изменить в XML?
Ответ №2:
Вы можете сделать это с помощью этого, добавив новое свойство в свой Activity:
protected ProgressDialog dialog;
Когда вы собираетесь открыть веб, добавьте это:
dialog = ProgressDialog.show(this, "LOADING", "Website is loading...", true);
YourWebView.loadUrl(url);
/* Prevent WebView from Opening the Browser */
YourWebView.setWebViewClient(new InsideWebViewClient());
А затем необходимо расширить класс WebViewClient и добавить в метод onPageFinished:
protected class InsideWebViewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url)
{
super.onPageFinished(view, url);
if(dialog != null amp;amp; dialog.isShowing())
dialog.dismiss();
}
}