Android中WebView加载网页设置进度条
程序员文章站
2023-12-02 08:55:40
我们平时在进行安卓开发使用到webview加载网页时,我们不能准确了解网页的加载进度,因此为了提高用户体验,我们在webview中加入进度条显示加载进度。
程序预览界面:...
我们平时在进行安卓开发使用到webview加载网页时,我们不能准确了解网页的加载进度,因此为了提高用户体验,我们在webview中加入进度条显示加载进度。
程序预览界面:
一、主界面xml布局文件
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".mainactivity" android:orientation="vertical" > <relativelayout android:layout_width="match_parent" android:layout_height="40dp" android:background="#1b9a16" /> <progressbar android:id="@+id/progressbar1" style="?android:attr/progressbarstylehorizontal" android:layout_width="match_parent" android:layout_height="3dip" android:progressdrawable="@drawable/pg" android:visibility="gone" /> <webview android:id="@+id/webview1" android:layout_below="@id/progressbar1" android:layout_width="match_parent" android:layout_height="match_parent" /> </linearlayout>
二、progressbar样式布局文件(pg.xml放在drawable下面)
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@android:id/background"> <shape> <corners android:radius="2dp" /> <gradient android:angle="270" android:centercolor="#e3e3e3" android:endcolor="#e6e6e6" android:startcolor="#c8c8c8" /> </shape> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="2dp" /> <gradient android:centercolor="#4aea2f" android:endcolor="#31ce15" android:startcolor="#5fec46" /> </shape> </clip> </item> </layer-list>
三、逻辑代码
package com.example.webview; import android.os.bundle; import android.app.activity; import android.transition.visibility; import android.view.keyevent; import android.view.menu; import android.view.view; import android.view.window; import android.webkit.webchromeclient; import android.webkit.websettings; import android.webkit.webview; import android.webkit.webviewclient; import android.widget.progressbar; public class mainactivity extends activity { private webview webview; private progressbar pg1; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); requestwindowfeature(window.feature_no_title); setcontentview(r.layout.activity_main); init(); webview.loadurl("http://www.baidu.com"); } private void init() { // todo 自动生成的方法存根 webview=(webview) findviewbyid(r.id.webview1); pg1=(progressbar) findviewbyid(r.id.progressbar1); webview.setwebviewclient(new webviewclient(){ //覆写shouldoverrideurlloading实现内部显示网页 @override public boolean shouldoverrideurlloading(webview view, string url) { // todo 自动生成的方法存根 view.loadurl(url); return true; } }); websettings seting=webview.getsettings(); seting.setjavascriptenabled(true);//设置webview支持javascript脚本 webview.setwebchromeclient(new webchromeclient(){ @override public void onprogresschanged(webview view, int newprogress) { // todo 自动生成的方法存根 if(newprogress==100){ pg1.setvisibility(view.gone);//加载完网页进度条消失 } else{ pg1.setvisibility(view.visible);//开始加载网页时显示进度条 pg1.setprogress(newprogress);//设置进度值 } } }); } //设置返回键动作(防止按返回键直接退出程序) @override public boolean onkeydown(int keycode, keyevent event) { // todo 自动生成的方法存根 if(keycode==keyevent.keycode_back) { if(webview.cangoback()) {//当webview不是处于第一页面时,返回上一个页面 webview.goback(); return true; } else {//当webview处于第一页面时,直接退出程序 system.exit(0); } } return super.onkeydown(keycode, event); } }
整体流程就这样。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
Android中WebView加载网页设置进度条
-
详解Android Webview加载网页时发送HTTP头信息
-
Android开发实现webview中img标签加载本地图片的方法
-
详解android 用webview加载网页(https和http)
-
Android中WebView加载网页设置进度条
-
Android Webview加载网页内容不全解决方案
-
Android开发如何加载WebView中的H5页面并全屏视频播放
-
Android 仿微信Webview加载网页进度和失败重试
-
android 使用webview加载网页问题
-
Android中Webview打开网页的同时发送HTTP头信息方法