Экран-заставка XML -> Отображение веб-просмотра - PullRequest
5 голосов
/ 21 декабря 2011

Спасибо за попытку решить мою проблему!

В настоящее время мое приложение в основном загружает веб-страницу с помощью веб-представления Android.Недостатком является то, что иногда (при плохом соединении) загрузка веб-страницы занимает более 10 секунд.Есть ли способ, которым я могу создать своего рода заставку XML-экрана «загрузки» во время загрузки веб-страницы?

Посмотрите на мой код ...

package com.ect;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.webkit.CookieSyncManager;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class SomeActivity extends Activity {

    /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //THIS IS WHAT I WANT: setContentView(R.layout.main);

        CookieSyncManager.createInstance(getBaseContext());

        // Let's display the progress in the activity title bar, like the
        // browser app does.


        getWindow().requestFeature(Window.FEATURE_PROGRESS);

        WebView webview = new WebView(this);
        setContentView(webview);


        webview.getSettings().setJavaScriptEnabled(true);

        final Activity activity = this;
        webview.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress) {
             // Activities and WebViews measure progress with different scales.
             // The progress meter will automatically disappear when we reach 100%
             activity.setProgress(progress * 1000);
        }
      });

webview.setWebViewClient(new WebViewClient() {

public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        //Users will be notified in case there's an error (i.e. no internet connection)
        Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
}

public void onPageFinished(WebView view, String url) {
    CookieSyncManager.getInstance().sync();
}
});

CookieSyncManager.getInstance().startSync();
CookieSyncManager.getInstance().sync();

     //This will load the webpage that we want to see
      webview.loadUrl("http://www.web.com/");

   }
}

Это мойкод.Если вы посмотрите внимательно, я сделал комментарий, который говорит: «ЭТО ТО, ЧТО Я ХОЧУ: ...»

В этом комментарии будет отображаться файл main.xml, который будет отображаться, но если я использую этот комментарий, то основной.XML-файл будет отображаться, но веб-просмотр никогда не появится ...

Как я могу отобразить файл main.xml и затем (после загрузки веб-просмотра) отобразить веб-страницу?

Ответы [ 4 ]

4 голосов
/ 21 декабря 2011

Возьмите посмотрите здесь , я думаю, что на этот вопрос уже ответили.Он в основном переопределяет некоторые методы класса WebViewClient.

3 голосов
/ 21 декабря 2011

Вы можете сделать что-то вроде этого: В вашем макете корневого макета (или относительный макет) сделайте что-то подобное.

<Framelayout android:layout_height="fill_parent" android:layout_width="fill_parent"
....>

    <Webview android:layout_height="fill_parent" android:layout_width="fill_parent"/>

    <include android:layout_height="fill_parent" android:layout_width="fill_parent"  
    layout="@loadingLayout"/>

</Framelayout>

Когда загрузка веб-представления завершится, просто измените видимость включенных компонентов на Унесенные.

Надеюсь, это поможет ..

3 голосов
/ 21 декабря 2011

Вы должны использовать событие onPageFinished ().

Вот официальная ссылка Clickme

Ваше основное занятие должно быть setContentView (R.layout.main); и функция onPageFinished () должна setContentView (webview);

3 голосов
/ 21 декабря 2011

Вам необходимо создать объект WebViewClient и переопределить метод onPageFinished().Затем используйте webView.setWebViewClient(), чтобы установить объект WebViewClient, который вы создали выше, в WebView.Теперь вы можете запустить некоторый код в onPageFinished(), например, setContentView(), чтобы изменить представление контента с экрана загрузки на веб-представление, когда оно завершит загрузку.

Этот учебник может вам немного помочь, хотя ине совсем то, что вам нужно.http://www.giantflyingsaucer.com/blog/?p=1331

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...