加载web视图之前显示的活动圈子 - 机器人 [英] Show activity circle before loading webview - Android

查看:157
本文介绍了加载web视图之前显示的活动圈子 - 机器人的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的WebView 展现在我的应用程序的网页。该网页大约需要2-3秒加载。 直到网页加载,我想告诉像显示这里一个活动圈进度条。
这是什么样的活动圈子是这样的:

我怎样才能做到呢?

我在网上搜索,但无法找到它是如何实现一个满意的和适当的解释。谢谢!

WebViewPage.java

 公共类网页延伸活动{

的WebView网页;
进度进度;

@覆盖
公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.web_page);

    意图startwebpage = getIntent();

    网页=(web视图)findViewById(R.id.webView);
    web.setWebViewClient(新myWebClient());

    web.getSettings()setJavaScriptEnabled(真)。
    web.loadUrl(http://www.google.com);
}

公共类myWebClient扩展WebViewClient
{
    @覆盖
    公共无效onPageStarted(web视图查看,字符串URL,位图图标){
        // TODO自动生成方法存根
        super.onPageStarted(查看,网址,网站图标);
    }

    @覆盖
    公共布尔shouldOverrideUrlLoading(web视图查看,字符串URL){
        // TODO自动生成方法存根

        view.loadUrl(URL);
        返回true;

    }

    @覆盖
    公共无效onPageFinished(web视图查看,字符串URL){
        // TODO自动生成方法存根
        super.onPageFinished(查看,网址);
    }
}
}
 

解决方案

onPageStarted 方法显示进度和罢免它在 onPageFinished

 私人ProgressDialog进度;
 

  1. 显示进度条在onPageStarted:

      @覆盖
    公共无效onPageStarted(web视图查看,字符串URL,位图图标){
        // TODO自动生成方法存根
        super.onPageStarted(查看,网址,网站图标);
    
         // prepare一个进度条对话框
            进度=新ProgressDialog(v.getContext());
            progressBar.setCancelable(真正的);
            progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            progressBar.show();
    }
     

2.Dismiss它onPageFinished:

  @覆盖
    公共无效onPageFinished(web视图查看,字符串URL){
        // TODO自动生成方法存根
        super.onPageFinished(查看,网址);

        progressBar.dismiss();
    }
 

编辑:使用进度而不是 ProgressDialog

  1. 使用以下code的布局。 使用您所选择的绘制为@可绘制/进步

     <进度
        机器人:ID =@ + ID / progress_bar
        风格=机器人:ATTR / progressBarStyleLarge
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_centerHorizo​​ntal =真
        机器人:layout_centerVertical =真
        机器人:能见度=水涨船高
        机器人:indeterminateDrawable =@可绘制/进步>
    < /进度>
     

  2. 充气它在你的活动。使其在onPageStarted可见匆匆在onPageFinished。

     私人进度prgrsBar;
    
    @覆盖
    公共无效onPageStarted(web视图查看,字符串URL,位图图标){
        // TODO自动生成方法存根
        super.onPageStarted(查看,网址,网站图标);
    
        prgrsBar.setVisibility(View.VISIBLE);
    }
    
     @覆盖
    公共无效onPageFinished(web视图查看,字符串URL){
        // TODO自动生成方法存根
        super.onPageFinished(查看,网址);
    
        prgrsBar.setVisibility(View.GONE);
    }
     

I am using webview to show a webpage in my app. The webpage takes about 2-3 seconds to load. Till the webpage loads, I want to show an activity circle progress bar like the one shown here.
This is what an activity circle looks like :

How can I accomplish it?

I searched the web but couldn't find a satisfactory and proper explanation of how it is implemented. Thanks!

WebViewPage.java

public class Webpage extends Activity {

WebView web;
ProgressBar progressBar;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.web_page);

    Intent startwebpage = getIntent();

    web = (WebView) findViewById(R.id.webView);
    web.setWebViewClient(new myWebClient());

    web.getSettings().setJavaScriptEnabled(true);
    web.loadUrl("http://www.google.com");
}

public class myWebClient extends WebViewClient
{
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // TODO Auto-generated method stub

        view.loadUrl(url);
        return true;

    }

    @Override
    public void onPageFinished(WebView view, String url) {
        // TODO Auto-generated method stub
        super.onPageFinished(view, url);
    }
}
}

解决方案

Display progressBar in onPageStarted method and dismiss it in onPageFinished.

    private ProgressDialog progressBar;

  1. Show progressBar in onPageStarted:

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub
        super.onPageStarted(view, url, favicon);
    
         // prepare for a progress bar dialog
            progressBar = new ProgressDialog(v.getContext());
            progressBar.setCancelable(true);
            progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);            
            progressBar.show();
    }
    

2.Dismiss it in onPageFinished:

    @Override
    public void onPageFinished(WebView view, String url) {
        // TODO Auto-generated method stub
        super.onPageFinished(view, url);

        progressBar.dismiss();
    }

EDIT : Use ProgressBar instead of ProgressDialog.

  1. Use Following code in your layout. Use drawable of your choice for "@drawable/progress"

     <ProgressBar
        android:id="@+id/progress_bar"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:visibility="gone"
        android:indeterminateDrawable="@drawable/progress" >
    </ProgressBar>
    

  2. Inflate it in your activity. Make it visible in onPageStarted and gone in onPageFinished.

    private ProgressBar prgrsBar;
    
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub
        super.onPageStarted(view, url, favicon);
    
        prgrsBar.setVisibility(View.VISIBLE);
    }
    
     @Override
    public void onPageFinished(WebView view, String url) {
        // TODO Auto-generated method stub
        super.onPageFinished(view, url);
    
        prgrsBar.setVisibility(View.GONE);
    }
    

这篇关于加载web视图之前显示的活动圈子 - 机器人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆