我有以下活动:
import android.graphics.Bitmap
import android.os.Bundle
import android.provider.Settings
import android.support.v7.app.AppCompatActivity
import android.util.Log
import android.webkit.WebView
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class ShowOneContactHtmlActivity : AppCompatActivity() {
private lateinit var maddress :String
private lateinit var mcontact_name : String
private lateinit var mavatar_to_str_base64: String
private lateinit var dialog: MyViewDialog
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_show_html)
val webview = findViewById<WebView>(R.id.webview)
dialog = MyViewDialog(ShowAddressessActivity@this)
dialog.showDialog()
maddress = intent.getStringExtra(SENT_ADDRESS_FROM_ADDRESSES_TO_SHOWONECONTACT_ACTIVITY)
mcontact_name = intent.getStringExtra(SENT_CONTACT_NAME_FROM_ADDRESSES_TO_SHOWONECONTACT_ACTIVITY)
val avatar = intent.getParcelableExtra<Bitmap>(SENT_BITMAP_FROM_ADDRESSES_TO_SHOWONECONTACT_ACTIVITY)
mavatar_to_str_base64 = bitmaptoStringBase64(avatar)
lateinit var htmlstring :String
GlobalScope.launch {
htmlstring = takeHtmlStringofThisContact()
withContext(Dispatchers.Main) {
webview.loadDataWithBaseURL(
"file:///android_asset/",
htmlstring,
"text/html",
"UTF-8",
""
)
dialog.hideDialog()
}
}
}
suspend private fun takeHtmlStringofThisContact():String {
lateinit var onecntcthtmlmaker: HtmlMaker
if (maddress == mcontact_name) {
onecntcthtmlmaker =
HtmlMaker(ShowOneContactHtmlActivity@ this, mavatar_to_str_base64, maddress)
} else {
onecntcthtmlmaker =
HtmlMaker(
ShowOneContactHtmlActivity@ this,
mavatar_to_str_base64,
mcontact_name
)
}
var smsparser = SmsParser(ShowOneContactHtmlActivity@ this)
withContext(Dispatchers.Default) {
var all_messages_of_one_contact = smsparser.loadInboxAndSentOfAddress(maddress)
var sortedlist =
all_messages_of_one_contact.sortedWith(compareBy({ it.m_date_in_milli }))
for (msg in sortedlist) {
onecntcthtmlmaker.putHtmlMessageInCurrentHtml(msg)
}
onecntcthtmlmaker.clearHtmlAtLast()
}
return onecntcthtmlmaker.current_html
}
}
而是不必查看整个代码,我的重点是显示loading.gif的对话框。使用此代码,当仍然进行URL加载时,我的加载gif消失。
我希望URL的加载完成后,加载的gif消失。
据我所知(如果我做错了,请纠正我),我必须制作我的WebViewClient,并且在执行onPageFinished()时,我必须通知Activity,并且对话框消失。还有另一种方法吗?在webview停止加载后,是否有一个函数在活动中被调用以覆盖它并在其中设置对话框的消失(即,加载gif)???
webView.webViewClient = object : WebViewClient() {
override fun onPageFinished(view: WebView?, url: String?) {
// Here
}
}