[OFFEN] WebView Loading Spinner

T

tefracky

App-Anbieter (kostenlos)
184
Hallo,

beim SwipeRefreshLayout wird ja ein farbgier Spinner beim Laden angezeigt:

Code:
// Pull to refresh
        swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container);
        swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                mWebView.reload();
                swipeRefreshLayout.setColorSchemeColors(
                        getResources().getColor(R.color.tsgwieseckhell),
                        getResources().getColor(R.color.tsgwieseckmittel),
                        getResources().getColor(R.color.tsgwieseckdunkel));
            }
        });

Kann man genau diesen Loading Spinner auch anzeigen lassen, wenn einfach ganz normal eine andere Seite geladen wird, also ohne Swipe to refresh?

Code:
public void onPageStarted(WebView view, String url){
                swipeRefreshLayout.setRefreshing(true);
            }

Dieser Code führte leider nicht zum Erfolg.
 
Hallo tef,

an dem habe ich auch schon verzweifelt gehangen und dann es schlussendlich aufgegeben. :)

Irgendwie wollte der Spinner bei mir auch nicht , oder hat nie aufgehört,
wenn die Seite durch war.

Ich denke es hängt mit der Kombination der verwendeten Elemente zusammen

Vielleicht weis jemand Anders dazu was Schlaues zu schreiben.
 
  • Danke
Reaktionen: tefracky
Hallo swa,

was hast Du stattdessen verwendet? Ich würde auch einen anderen Spinner nehmen, aber dann sollte der auch bei dem SwipeLayout zu sehen sein, damit es einheitlich wird.

Gruß

Tefracky
 
gar keinen - ich habe mir ganz oben einen Progress gesetzt.

Der Grund dafür ist , dass ein customized Spinner overlay sein muss, dann musst du bei der App wieder die Berechtigungen
beim User anfordern (> Marshmellow) , was dann die wieder verweigern.

Kannst dir ja mal die App hier vom Forum anschauen,
habe die mal in 2 Tagen zusammengeklappert - also nix besonderes . verdeutlicht es aber

Android-Hilfe.de App – Android-Apps auf Google Play
 
  • Danke
Reaktionen: tefracky
Gefällt mir, was Du da gemacht hast. Wie hast du denn die Leiste eingebaut? Im Internet finde ich irgendwie 1000 Anleitungen und eine ist komplizierter als die andere.
Code:
<WebView
    android:id="@+id/activity_main_webview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="visible">
</WebView>

<ProgressBar
    android:id="@+id/simpleProgressBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"/>

Der Teil ist ja noch klar, aber wie erwecke ich die Leiste zum Leben und fülle sie mit Inhalt?
 
Ich habe mich jetzt für eine Lösung entschieden:
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/swipe_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent"
        tools:context=".MainActivity" >

        <WebView
            android:id="@+id/activity_main_webview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="visible"></WebView>
    </android.support.v4.widget.SwipeRefreshLayout>

</LinearLayout>

Code:
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar);
        getWindow().setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);
        mWebView = (WebView) findViewById(R.id.activity_main_webview);
        mWebView.setWebChromeClient(new WebChromeClient() {
             public void onProgressChanged(WebView view, int progress) {
                progressBar.setProgress(progress * 100);
            }
        });

        // Self handle links
        mWebView.setWebViewClient(new NewWebViewClient(){
            public void onPageFinished(WebView view, String url){
                swipeRefreshLayout.setRefreshing(false);
                progressBar.setVisibility(View.INVISIBLE);
                mWebView.setLayoutParams(new LinearLayout.LayoutParams(WebView.LayoutParams.MATCH_PARENT, WebView.LayoutParams.MATCH_PARENT));
            }

            public void onPageStarted(WebView view, String url){
                progressBar.setVisibility(View.VISIBLE);
            }
        });

Allerdings hapert es noch an 3 Stellen:
1. Wenn die Seite geladen wird, soll die ProgressBar ausgeblendet und die WebView auf Vollbild gezogen werden.

2. "onPageStarted" wird überhaupt nicht aufgerufen.

3. Irgendwie ändert sich der Progress in der ProgressBar überhaupt nicht.
 

Ähnliche Themen

K
Antworten
3
Aufrufe
1.167
Kapikalaani
K
H
Antworten
0
Aufrufe
932
HoustonWeHaveAProblem
H
P
  • pagrf
Antworten
9
Aufrufe
976
SlayNox
S
Zurück
Oben Unten