Home  >  Article  >  Web Front-end  >  Use Android to imitate WeChat to load the progress bar of H5 page

Use Android to imitate WeChat to load the progress bar of H5 page

不言
不言Original
2018-06-12 17:06:272183browse

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn