Android中的webview的进度条
16lz
2021-12-04
<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;@Overridepublic 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农民伯伯
*@seehttp://www.cnblogs.com/over140/archive/2013/03/07/2947721.html
*
*/
@SuppressWarnings("deprecation")
publicclassProgressWebViewextendsWebView{
privateProgressBarprogressbar;
publicProgressWebView(Contextcontext,AttributeSetattrs){
super(context,attrs);
progressbar=newProgressBar(context,null,android.R.attr.progressBarStyleHorizontal);
progressbar.setLayoutParams(newLayoutParams(LayoutParams.FILL_PARENT,3,0,0));
addView(progressbar);
//setWebViewClient(newWebViewClient(){});
setWebChromeClient(newWebChromeClient());
}
publicclassWebChromeClientextendsandroid.webkit.WebChromeClient{
@Override
publicvoidonProgressChanged(WebViewview,intnewProgress){
if(newProgress==100){
progressbar.setVisibility(GONE);
}else{
if(progressbar.getVisibility()==GONE)
progressbar.setVisibility(VISIBLE);
progressbar.setProgress(newProgress);
}
super.onProgressChanged(view,newProgress);
}
}
@Override
protectedvoidonScrollChanged(intl,intt,intoldl,intoldt){
LayoutParamslp=(LayoutParams)progressbar.getLayoutParams();
lp.x=l;
lp.y=t;
progressbar.setLayoutParams(lp);
super.onScrollChanged(l,t,oldl,oldt);
}
}
三、加载网页的公共Activity
/***加载网页的Activity
*
*@author农民伯伯
*@seehttp://www.cnblogs.com/over140/archive/2013/03/07/2947721.html
*
*/
publicclassWebActivityextendsBaseActivity{
privateProgressWebViewwebview;
privateStringurl;
privateStringname;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
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(newDownloadListener(){
@Override
publicvoidonDownloadStart(Stringurl,StringuserAgent,StringcontentDisposition,Stringmimetype,longcontentLength){
if(url!=null&&url.startsWith("http://"))
startActivity(newIntent(Intent.ACTION_VIEW,Uri.parse(url)));
}
});
webview.loadUrl(url);
}
}
commom_web.xml
<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<includelayout="@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、自定义控件是在转载的,忘记出处,感谢~~
结束
没啥高深技术,实用就行!
更多相关文章
- Android(安卓)相对布局
- RelativeLayout的常用属性
- Android热更新三:Android类加载机制
- Android(安卓)控件和其基本属性1
- 第5章 Android常见XML属性解析-更新中
- Android中Button的使用
- 相对布局的各个含义
- Android——四种基本布局
- TextView控件的使用(Android设置文本显示格式)