Intereting Posts
Android: TextView.setTextAppearance () не влияет на размер текста Я хочу получить profilepicture whatsApp, но только получить имя и контактную информацию? Андроид, фон, список слоев и масштабируемый элемент растрового изображения Android 4.2: поведение обратного стека с вложенными фрагментами Изображение размыто на другом устройстве Удерживайте активность при блокировке экрана, когда экраны alseep Как добавить ToolBar в PreferenceActivity? Изменение размера динамического текста в соответствии с таблицей Клиент RTSP в android Пользовательская панель быстрого поиска Listview в Android Неоткрытое исключение, созданное финализатором: ошибка API Google или ошибка ядра Samsung? Прозрачная тема не работает при программном программировании на Android 2.3.3 или 4.2 Сбросить таймер в android Как обрабатывать ошибку redirect_uri_mismatch, когда приложение Android получает автономный доступ для веб-back-end? Android: EventHub.removeMessages (int what = 107) не поддерживается до того, как WebViewCore настроен

Панель прогресса Android WebView

Я посмотрел на вопрос, похожий на это здесь, но поскольку я новичок, кто-нибудь может объяснить, как заставить это работать в WebView или, по крайней мере, установить 10-секундную задержку времени, чтобы люди знали, что она загружается?

Solutions Collecting From Web of "Панель прогресса Android WebView"

Для горизонтального индикатора выполнения сначала необходимо определить индикатор выполнения и связать его с вашим XML-файлом следующим образом:

final ProgressBar pbar; final TextView txtview = (TextView)findViewById(R.id.tV1); pbar = (ProgressBar) findViewById(R.id.pB1); 

Затем вы можете использовать метод onProgressChanged в вашем WebChromeClient:

 MyView.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { if(progress < 100 && pbar.getVisibility() == ProgressBar.GONE){ pbar.setVisibility(ProgressBar.VISIBLE); txtview.setVisibility(View.VISIBLE); } Pbar.setProgress(progress); if(progress == 100) { pbar.setVisibility(ProgressBar.GONE); txtview.setVisibility(View.GONE); } } }); 

После этого в вашем макете у вас есть что-то вроде этого

 <TextView android:text="Loading, please wait . . ." android:textAppearance="?android:attr/textAppearanceSmall" android:id="@+id/tV1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#000000"></TextView> <ProgressBar android:id="@+id/pB1" style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:padding="2dip"> </ProgressBar> 

Вот как я это сделал в своем приложении.

Я только что нашел действительно хороший пример того, как это сделать здесь: http://developer.android.com/reference/android/webkit/WebView.html . Вам просто нужно изменить setprogress:

 activity.setProgress(progress * 1000); 

в

 activity.setProgress(progress * 100); 

Вот самый простой способ добавить индикатор выполнения в веб-представление Android.

Добавить логическое поле в вашей активности / фрагменте

 private boolean isRedirected; 

Это логическое событие предотвратит перенаправление веб-страниц из-за мертвых ссылок. Теперь вы можете просто передать объект WebView и веб-адрес Url в этот метод.

 private void startWebView(WebView webView,String url) { webView.setWebViewClient(new WebViewClient() { ProgressDialog progressDialog; public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); isRedirected = true; return false; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); isRedirected = false; } public void onLoadResource (WebView view, String url) { if (!isRedirected) { if (progressDialog == null) { progressDialog = new ProgressDialog(SponceredDetailsActivity.this); progressDialog.setMessage("Loading..."); progressDialog.show(); } } } public void onPageFinished(WebView view, String url) { try{ isRedirected=true; if (progressDialog.isShowing()) { progressDialog.dismiss(); progressDialog = null; } }catch(Exception exception){ exception.printStackTrace(); } } }); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl(url); } 

Здесь при загрузке он будет вызывать onPageStarted . Здесь я устанавливаю логическое поле false. Но когда заканчивается загрузка страницы, он приходит к методу onPageFinished и здесь Boolean field устанавливается в true. Иногда, если URL-адрес мертв, он будет перенаправлен, и он будет onLoadResource() перед методом onPageFinished . По этой причине он не будет скрывать индикатор выполнения. Чтобы предотвратить это, я проверяю if (!isRedirected) в onLoadResource()

В onPageFinished() прежде чем onPageFinished() «Прогресс», вы можете написать свой 10-секундный код задержки

Вот и все. Счастливое кодирование 🙂

Это правда, есть и более полный вариант, например, изменение имени приложения для предложения, которое вы хотите. Проверьте это руководство, которое может помочь:

http://www.firstdroid.com/2010/08/04/adding-progress-bar-on-webview-android-tutorials/

В этом учебном пособии у вас есть полный пример того, как использовать панель прогресса в приложении webview.

Адриан.

По словам Мадьюдаля Карим, я написал подобный.

 webView = (WebView) view.findViewById(R.id.web); progressBar = (ProgressBar) view.findViewById(R.id.progress); webView.setWebChromeClient(new WebChromeClient()); webView.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); progressBar.setVisibility(View.VISIBLE); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); progressBar.setVisibility(View.GONE); } @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { super.onReceivedError(view, request, error); Toast.makeText(getActivity(), "Cannot load page", Toast.LENGTH_SHORT).show(); progressBar.setVisibility(View.GONE); } }); webView.loadUrl(url); 

Дождитесь завершения процесса …

 while(webview.getProgress()< 100){} progressBar.setVisibility(View.GONE); 
  webview= (WebView) findViewById(R.id.web); webview.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { WebActivity .setTitle("Loading..."); WebActivity .setProgress(progress * 100); if(progress == 100) WebActivity .setTitle(R.string.app_name); } }); webview.setWebViewClient(new WebViewClient()); webview.getSettings().setJavaScriptEnabled(true); webview.loadUrl("http://google.com"); 

Для получения дополнительной информации нажмите здесь http://androiddhina.blogspot.in/2015/05/android-load-webview-with-progressbar.html