Skocz do zawartości
piotrsg

Progres & activity w WebView - jak dodać

    Rekomendowane odpowiedzi

    Hej.

    Mam aktywność z WebView. Pobiera sobie url z Firebase i wyświetla stronę www.

    Generalnie wszystko działa ale chciałbym dołączyć do tego pasek postępu (żeby użytkownik widział, że strona się ładuje. Przy słabym internecie może to chwilę potrwać więc użytkownik może uznać, że coś nie działa i wyjść z aktywności)

    Chodzi mi o coś takiego:

    https://material.io/guidelines/components/progress-activity.html#progress-activity-types-of-indicators

    typ linear determinate

     

    Pytanie: gdzie i co wstawić żeby to działało? 

    oto mój kod:

    public class WebActivity extends AppCompatActivity {
    
        private Toolbar mToolbar;
    
        private WebView mWebView;
    
        private DatabaseReference mDatabase;
    
        private String mPost_key = null;
    
        private String webUrl;
        private String webDostawca;
    
        private Menu mMenu;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_web);
    
            mDatabase = FirebaseDatabase.getInstance().getReference().child("WIADOMOSCI");
    
            mPost_key = getIntent().getExtras().getString("card_id");
    
            mDatabase.child(mPost_key).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
    
                    webUrl = (String) dataSnapshot.child("Url").getValue();
                    webDostawca = (String) dataSnapshot.child("Dostawca").getValue();
    
                    setTitle("");
                    getSupportActionBar().setSubtitle(webDostawca);
    
                    mWebView = (WebView) findViewById(R.id.webView);
                    mWebView.setWebViewClient(new WebViewClient());
                    mWebView.loadUrl(webUrl);
                    mWebView.getSettings().setJavaScriptEnabled(true);
                }
    
                @Override
                public void onCancelled(DatabaseError databaseError) {
    
                }
            });
    
            mToolbar = (Toolbar) findViewById(R.id.web_toolbar);
            setSupportActionBar(mToolbar);
            mToolbar.setSubtitleTextColor(ContextCompat.getColor(getApplicationContext(),R.color.colorPrimaryDark));
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            mToolbar.setNavigationIcon(R.drawable.left_arrow1);
    
            Drawable drawable = ContextCompat.getDrawable(getApplicationContext(), R.drawable.mark1);
            mToolbar.setOverflowIcon(drawable);
    
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
    
            mMenu = menu;
    
            super.onCreateOptionsMenu(menu);
    
            getMenuInflater().inflate(R.menu.web_menu, menu);
    
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
    
            if(item.getItemId() == R.id.web){
    
                Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(webUrl));
                startActivity(webIntent);
            }
    
            if(item.getItemId() == R.id.share){
    
                Toast.makeText(WebActivity.this, "share", Toast.LENGTH_LONG).show();
            }
    
            return super.onOptionsItemSelected(item);
        }
    }

     

     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Potrzebujesz dodać do swojego WebView WebChromeClient i nadpisać w nim metodę onProgressChanged :) Zamieszczam przykładową implementację.

    webView.setWebChromeClient(new WebChromeClient() {
    public void onProgressChanged(WebView view, int progress) {
        progressBar.setProgress(progress);
        if (progress == 100) {
            progressBar.setVisibility(View.GONE);
    
        } else {
            progressBar.setVisibility(View.VISIBLE);
    
        }
     }
    });

     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x