This article mainly introduces the Android imitation WeChat loading H5 page progress bar in detail, which has certain reference value. Interested friends can refer to it
Preface
When checking in the front-end page of WebView in Android, it is affected by the network environment and the size of the page content, which sometimes makes users wait for a long time. Displaying a loading progress bar can greatly improve the experience. The loading effect of the H5 page accessed in WeChat is good, so I copied it and wrote one.
1. Implementation
1-1. Custom class inherits WebView class
class ProgressWebView(context: Context, attr: AttributeSet) : WebView(context, attr) { /** *xml布局中使用,所以用两个构造参数的构造函数 */ private var progressBar: ProgressBar? = null /** *初始化属性操作 */ init { /** *设置ProgressBar是横向 */ progressBar = ProgressBar(context, null, android.R.attr.progressBarStyleHorizontal) /** *设置进度条属性 */ progressBar!!.progressDrawable = context.resources.getDrawable(R.drawable.webview_hori_progress) /** *设置ProgressBar的布局参数 */ val layoutParams = FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, 10, 0) /** *绑定参数 */ progressBar!!.layoutParams = layoutParams /** *将ProgressBar添加到WebView上 默认头部 */ addView(progressBar) /** *设置WebView辅助类WebChromeClient,获取实时加载进度 */ setWebChromeClient(object : WebChromeClient() { override fun onProgressChanged(webview: WebView?, progress: Int) { super.onProgressChanged(webview, progress) Log.d("progressView", progress.toString()) if (progress == 100) progressBar!!.visibility = View.GONE else { progressBar!!.visibility = View.VISIBLE /** *设置进度参数 */ progressBar!!.progress = progress } } }) } }
Look at the properties of the loading progress bar set, webview_hori_progress.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!--最下层item属性--> <item> <shape> <!--无圆角--> <corners android:radius="0dp" /> <!--线条颜色--> <gradient android:endColor="#FFE4E3E3" android:startColor="#FFE4E3E3" /> </shape> </item> <!--上层item属性--> <item> <clip> <shape> <!--无圆角--> <corners android:radius="0dip" /> <!--线条颜色 渐变,由深到浅--> <gradient android:centerColor="#96EF1627" android:endColor="#50F53D4B" android:startColor="#FFEF1627" /> </shape> </clip> </item> </layer-list>
1-2.xml layout reference
##
<com.ypl.csdndemo.ProgressWebView android:id="@+id/wvProgress" android:layout_width="match_parent" android:layout_height="match_parent"/>
1-3.Code implementation
/** *android kotlin 的拓展,导入此包 使用到的组件不用findViewById */ import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) /** *WebView设置属性 */ val setting = wvProgress.settings /** *本地缓存无则网络 */ setting.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK /** *设置识别javascript代码 */ setting.javaScriptEnabled = true /** *纵向scrollbar去除 */ wvProgress.isVerticalScrollBarEnabled =false /** *加载页面 */ wvProgress.loadUrl("https://blog.csdn.net/") } }
2. Rendering
The above is the entire article Content, I hope it will be helpful to everyone’s learning. For more related content, please pay attention to the PHP Chinese website! Related recommendations:Use css to implement an ios7-like switch button
The above is the detailed content of Use Android to imitate WeChat to load the progress bar of H5 page. For more information, please follow other related articles on the PHP Chinese website!