zoukankan      html  css  js  c++  java
  • Android中的webview的进度条

        <application
            android:icon="@drawable/hunqin"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Light" >

    主题 android:theme------->必须不能使Theme.Light.NoTitleBar

    否则不起作用

    requestWindowFeature(Window.FEATURE_PROGRESS);
            setContentView(R.layout.progressbar);
            setProgressBarVisibility(true);
        <application
            android:icon="@drawable/hunqin"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Light.NoTitleBar" >
    public class ProgressTest extends Activity{
    
    final Activity context = this;
    
    @Override
    public void onCreate(Bundle b) {
       super.onCreate(b);
       requestWindowFeature(Window.FEATURE_PROGRESS);//让进度条显示在标题栏上
       setContentView(R.layout.main);
    
       WebView webview = (WebView)findViewById(R.id.webview);
       webview.setWebChromeClient(new WebChromeClient() {
                  public void onProgressChanged(WebView view, int progress) {
                    //Activity和Webview根据加载程度决定进度条的进度大小
                   //当加载到100%的时候 进度条自动消失
                    context.setProgress(progress * 100);
           }
        });
       webview.loadUrl(url);
    }

    http://www.cnblogs.com/over140/archive/2013/03/07/2947721.html

    前言

     如果不使用系统自带的TitleBar(即Activity被设置@android:style/Theme.NoTitleBar),那就需要自己来写进度条了,这里封装了一个自定义控件和加载网页的公共Activity,方便使用。

    声明 

      欢迎转载,但请保留文章原始出处:) 

        博客园:http://www.cnblogs.com

        农民伯伯: http://over140.cnblogs.com   

    正文

    一、截图

     

    二、自定义控件

    复制代码
    /**
     * 带进度条的WebView
     * @author 农民伯伯
     * @see http://www.cnblogs.com/over140/archive/2013/03/07/2947721.html
     * 
     */
    @SuppressWarnings("deprecation")
    public class ProgressWebView extends WebView {

        private ProgressBar progressbar;

        public ProgressWebView(Context context, AttributeSet attrs) {
            super(context, attrs);
            progressbar = new ProgressBar(context, null, android.R.attr.progressBarStyleHorizontal);
            progressbar.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 3, 0, 0));
            addView(progressbar);
            //        setWebViewClient(new WebViewClient(){});
            setWebChromeClient(new WebChromeClient());
        }

        public class WebChromeClient extends android.webkit.WebChromeClient {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                if (newProgress == 100) {
                    progressbar.setVisibility(GONE);
                } else {
                    if (progressbar.getVisibility() == GONE)
                        progressbar.setVisibility(VISIBLE);
                    progressbar.setProgress(newProgress);
                }
                super.onProgressChanged(view, newProgress);
            }

        }

        @Override
        protected void onScrollChanged(int l, int t, int oldl, int oldt) {
            LayoutParams lp = (LayoutParams) progressbar.getLayoutParams();
            lp.x = l;
            lp.y = t;
            progressbar.setLayoutParams(lp);
            super.onScrollChanged(l, t, oldl, oldt);
        }
    }
    复制代码

    三、加载网页的公共Activity

    复制代码
    /**
     * 加载网页的Activity
     * 
     * @author 农民伯伯
     * @see http://www.cnblogs.com/over140/archive/2013/03/07/2947721.html
     * 
     */
    public class WebActivity extends BaseActivity {

        private ProgressWebView webview;
        private String url;
        private String name;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.commom_web);

            // ~~~ 获取参数
            url = getIntent().getStringExtra("url");
            name = getIntent().getStringExtra("name");

            // ~~~ 绑定控件
            webview = (ProgressWebView) findViewById(R.id.webview);

            // ~~~ 设置数据
            titleText.setText(name);
            webview.getSettings().setJavaScriptEnabled(true);
            webview.setDownloadListener(new DownloadListener() {
                @Override
                public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
                    if (url != null && url.startsWith("http://"))
                        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                }
            });

            webview.loadUrl(url);
        }
    }
    复制代码

    commom_web.xml 

    复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <include layout="@layout/include_title" />

        <com.nmbb.ui.widget.ProgressWebView
            android:id="@+id/webview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />

    </LinearLayout>
    复制代码

    四、补充说明

    1、还可以再优化一下,在标题栏加一个刷新按钮。

    2、如果加载的页面有需要下载文件,需要设置setDownloadListener方法,根据项目实际需求定制。

    3、自定义控件是在转载的,忘记出处,感谢~~ 

    结束

    没啥高深技术,实用就行! 

  • 相关阅读:
    1 绪论
    3.4 向量空间及其子空间的的基与维数
    3.3 极大线性无关组以及&向量的秩
    3.2 线性相关与线性无关的向量组
    3.1 n维向量空间及其子空间
    2.6 拉普拉斯定理
    2.5 克拉默法则
    2.4 行列式按行(列)展开
    2.3 行列式的性质
    2.2 n阶行列式的定义
  • 原文地址:https://www.cnblogs.com/daishuguang/p/3884856.html
Copyright © 2011-2022 走看看