Heim  >  Artikel  >  Web-Frontend  >  Verwenden Sie Android, um WeChat zu imitieren und den Fortschrittsbalken der H5-Seite zu laden

Verwenden Sie Android, um WeChat zu imitieren und den Fortschrittsbalken der H5-Seite zu laden

不言
不言Original
2018-06-12 17:06:272229Durchsuche

In diesem Artikel wird hauptsächlich der Fortschrittsbalken zum Laden der H5-Seite für Android im Detail vorgestellt, der einen gewissen Referenzwert hat

Vorwort

Beim Einchecken der Front-End-Seite von WebView in Android wird diese von der Netzwerkumgebung und der Größe des Seiteninhalts beeinflusst, was manchmal dazu führt, dass Benutzer lange warten müssen. Die Anzeige eines Ladefortschrittsbalkens kann das Erlebnis erheblich verbessern. Der Ladeeffekt der in WeChat aufgerufenen H5-Seite ist gut, daher habe ich sie kopiert und eine geschrieben.

1. Implementieren Sie

1-1. Die benutzerdefinierte Klasse erbt die WebView-Klasse

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

  }
  }

 })

 }
}

Sehen Sie sich die Eigenschaften des Ladefortschrittsbalkensatzes webview_hori_progress.xml an

<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. Referenz im XML-Layout

 <com.ypl.csdndemo.ProgressWebView
 android:id="@+id/wvProgress"
 android:layout_width="match_parent"
 android:layout_height="match_parent"/>

Code-Implementierung

 /**
 *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

Das Obige ist das Ich hoffe, dass der Inhalt des gesamten Artikels für das Lernen aller hilfreich ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website!

Verwandte Empfehlungen:

Verwenden Sie CSS, um eine iOS7-ähnliche Umschalttaste zu implementieren

Das obige ist der detaillierte Inhalt vonVerwenden Sie Android, um WeChat zu imitieren und den Fortschrittsbalken der H5-Seite zu laden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn