如何在android webview中添加进度条

时间:2015-12-04 20:07:30

标签: android webview

我正在尝试在基于android webview的应用中添加进度条。我添加了以下代码但在测试时无法正常工作。 注意:index.html具有加载随机URL的重定向标记。除了进度条之外,一切都很好。

  

MainActivity.java

public class MainActivity extends ActionBarActivity {
    private WebView mWebView;
    ProgressBar Pbar;
    private final int ID_MENU_EXIT = 1;

     protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mWebView = (WebView) findViewById(R.id.activity_main_webview);
         Pbar = (ProgressBar) findViewById(R.id.pB1);
               // Enable Javascript
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
         mWebView.setWebViewClient(new WebViewClient());
         mWebView.setWebViewClient(new MyAppWebViewClient());
         if (isNetworkAvailable())
            mWebView.loadUrl("file:///android_asset/www/index.html");
        else
            mWebView.loadUrl("file:///android_asset/www/404.html");

    }

    public class myWebClient extends WebViewClient{
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            Pbar.setVisibility(View.GONE);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }


    private boolean isNetworkAvailable() {
        ConnectivityManager connectivityManager
                = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }


    @Override
    public void onBackPressed() {
        if(mWebView.canGoBack()) {
            mWebView.goBack();
        } else {
            super.onBackPressed();
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
              //get the MenuItem reference
        MenuItem item =
                menu.add(Menu.NONE,ID_MENU_EXIT,Menu.NONE,R.string.exitOption);
        //set the shortcut
        item.setShortcut('5', 'x');


        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        //check selected menu item
        if(item.getItemId() == ID_MENU_EXIT)
        {
            //close the Activity
            this.finish();
            return true;
        }
        return false;
    }


}
  

activity_main.xml中

<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>

       <WebView
        android:id="@+id/activity_main_webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
         />

1 个答案:

答案 0 :(得分:0)

那么,

当WebView等待加载WebView时,请将此代码用于Progress Bar。 :

布局:

@Component({
    selector: 'my-app'
})
@View({
    directives: [ROUTER_DIRECTIVES, CORE_DIRECTIVES],
    template: `
        <h1>Routing Example</h1>
        <div>
            <div>
                <b>Main menu: </b>
                <a [router-link]="['Home']">Home</a> | 
                <a [router-link]="['One']">One</a> | 
                <a [router-link]="['Two']">Two</a>

                <!-- 
                  // I would rather do something like this:
                  <a *ng-for="#route of router.routes" [router-link]="['route.name']">{{ route.name }}</a>
                -->

            </div>
            <div>
                <router-outlet></router-outlet>
            </div>
        </div>
    `
})
@RouteConfig([
    { path: '/', redirectTo: '/home' },
    { path: '/home', as: 'Home', component: Main },
    { path: '/one', as: 'One', component: One },
    { path: '/two', as: 'Two', component: Two },
])
export class MyApp {
    constructor(public location: Location, public router: Router){
    }
}

<强>活动:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <WebView
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</RelativeLayout>