android 标题栏进度圈使用方法,Android带顶部进度条和标题的自定义WebView

1.简介

开发中经常用到WebView加载网页,加载时需要显示进度条和网页标题,下面提供一个自动加载进度条和标题的WebView,进度条可自定义样式和高度,附带js与Android交互方法,可以满足大多数需求

先上效果图

1811631e2f65

加载中.png

1811631e2f65

加载完成.png

1811631e2f65

调用js中方法.png

1811631e2f65

js调用java中方法.png

2.ProgressWebView

自定义ProgressWebView继承WebView

//构造方法

public ProgressWebView(Context context, AttributeSet attrs) {

super(context, attrs);

//动态创建ProgressBar

progressbar = new ProgressBar(context, null,

android.R.attr.progressBarStyleHorizontal);

//设置ProgressBar的宽高和横纵坐标,坐标为0,0在最上方显示

progressbar.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,

5, 0, 0));

//将ProgressBar加入WebView

addView(progressbar);

setWebChromeClient(new WebChromeClient());

setWebViewClient(new webViewClient());

}

//WebChromeClient监听进度

public class WebChromeClient extends android.webkit.WebChromeClient {

@Override

public void onProgressChanged(WebView view, int newProgress) {

//当进度为100时,将进度条隐藏

if (newProgress == 100) {

progressbar.setVisibility(GONE);

} else { //不为100时,实时设置ProgressBar进度

if (progressbar.getVisibility() == GONE)

progressbar.setVisibility(VISIBLE);

progressbar.setProgress(newProgress);

}

super.onProgressChanged(view, newProgress);

}

}

//WebViewClient监听WebView重定向和加载完成后显示标题

class webViewClient extends WebViewClient {

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return true;

}

@Override

public void onPageFinished(WebView view, String url) {

super.onPageFinished(view, url);

//当加载完毕后,调用view.getTitle()获取网页的标题

if(onTitleReceivedListener != null){

onTitleReceivedListener.onTitleReceived(view.getTitle());

}

}

}

//定义显示标题的接口

public interface OnTitleReceivedListener{

void onTitleReceived(String title);

}

//接口set方法

public void setOnTitleReceivedListener(OnTitleReceivedListener onTitleReceivedListener) {

this.onTitleReceivedListener = onTitleReceivedListener;

}

//设置ProgressBar的样式,可以自定义

public void setProgressbarDrawable(Drawable d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中,你可以通过使用 `WebChromeClient` 和 `ProgressBar` 实现 WebView 的加载进度条。这里是一个简单的示例: 1. 首先,在你的布局文件中添加一个 `ProgressBar` 组件: ```xml <ProgressBar android:id="@+id/progressBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:indeterminate="false" android:max="100" android:progress="0" android:visibility="invisible" /> ``` 在这个示例中,我们设置了 `ProgressBar` 的最大值为 100,初始进度为 0,不显示动画,并且默认是不可见的。 2. 在你的 Activity 类中,设置 WebView 的 WebChromeClient,并实现 `onProgressChanged()` 方法来更新进度条进度。 ```java WebView myWebView = findViewById(R.id.webview); ProgressBar progressBar = findViewById(R.id.progressBar); myWebView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); // 更新进度条进度 progressBar.setProgress(newProgress); // 如果进度条已经满了,隐藏进度条 if (newProgress == 100) { progressBar.setVisibility(View.INVISIBLE); } else { progressBar.setVisibility(View.VISIBLE); } } }); myWebView.loadUrl("https://www.example.com"); ``` 在这个示例中,我们设置了 WebView 的 `WebChromeClient`,并重写了 `onProgressChanged()` 方法。在每次加载进度发生变化时,我们通过 `setProgress()` 方法更新进度条进度,并根据进度是否为 100 来显示或隐藏进度条。 注意:如果你的应用程序使用了 Material Design,你可以使用 `ProgressBar` 的 `indeterminateDrawable` 属性来设置进度条的样式。你可以使用 `@drawable/progress_indeterminate_material` 来使用 Material Design 风格的进度条

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值