Cet article présente principalement en détail la barre de progression de la page H5 de chargement de l'imitation Android WeChat, qui a une certaine valeur de référence. Les amis intéressés peuvent s'y référer
Avant-propos
. Lors de la vérification de la page frontale de WebView sous Android, elle est affectée par l'environnement réseau et la taille du contenu de la page, ce qui fait parfois attendre longtemps les utilisateurs. L'affichage d'une barre de progression de chargement peut grandement améliorer l'expérience. L'effet de chargement de la page H5 accessible dans WeChat est bon, je l'ai donc copié et écrit une.
1. Implémentez
1-1 La classe personnalisée hérite de la classe WebView
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | class ProgressWebView(context: Context, attr: AttributeSet) : WebView(context, attr) {
private var progressBar: ProgressBar? = null
init {
progressBar = ProgressBar(context, null, android.R.attr.progressBarStyleHorizontal)
progressBar!!.progressDrawable = context.resources.getDrawable(R.drawable.webview_hori_progress)
val layoutParams = FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, 10, 0)
progressBar!!.layoutParams = layoutParams
addView(progressBar)
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
}
}
})
}
}
|
Copier après la connexion
Regardez les propriétés de l'ensemble de barres de progression de chargement, webview_hori_progress.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <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>
|
Copier après la connexion
1-2.xml référencé dans la mise en page
1 2 3 4 | <com.ypl.csdndemo.ProgressWebView
android:id= "@+id/wvProgress"
android:layout_width= "match_parent"
android:layout_height= "match_parent" />
|
Copier après la connexion
1- 3. Réalisation du code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val setting = wvProgress.settings
setting.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK
setting.javaScriptEnabled = true
wvProgress.isVerticalScrollBarEnabled =false
wvProgress.loadUrl( "https://blog.csdn.net/" )
}
}
|
Copier après la connexion
2. Rendu

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !
Recommandations associées :
Utilisez CSS pour implémenter un bouton de commutation de type iOS7
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!