Commit 1b4dea1f authored by leichao.gao's avatar leichao.gao

update

parent d8d2a736
package com.base.browserwhite.ui.activity.webbrowser
import android.animation.Animator
import android.animation.AnimatorSet
import android.animation.ObjectAnimator
import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.net.Uri
import android.net.http.SslError
import android.view.View
import android.view.animation.AccelerateInterpolator
import android.view.animation.DecelerateInterpolator
import android.view.animation.LinearInterpolator
import android.webkit.CookieManager
import android.webkit.JsResult
import android.webkit.SslErrorHandler
......@@ -25,8 +31,8 @@ import com.base.browserwhite.bean.HistoryBean
import com.base.browserwhite.databinding.FragmentWebViewBinding
import com.base.browserwhite.ui.activity.download.DownloadAdapter
import com.base.browserwhite.ui.activity.download.DownloadDialog.showDownloadFinishDialog
import com.base.browserwhite.ui.fragment.BaseFragment
import com.base.browserwhite.ui.activity.download.DownloadDialog.showDownloadVideoDialog
import com.base.browserwhite.ui.fragment.BaseFragment
import com.base.browserwhite.utils.ColorUtils
import com.base.browserwhite.utils.DownloadUtils
import com.base.browserwhite.utils.DownloadUtils.getDownloadJson
......@@ -120,6 +126,107 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
}
fun dropAndBounceButton(button: View) {
// 初始位置
val startTranslationY = button.translationY
// 掉落位置
val dropTranslationY = (-button.height * 3).toFloat()
// 回弹高度
val bounceHeight = -30f
// 创建掉落动画
val dropAnimator =
ObjectAnimator.ofFloat(button, "translationY", startTranslationY, dropTranslationY)
dropAnimator.setDuration(1000)
dropAnimator.interpolator = LinearInterpolator()
// 创建第一次回弹动画
val bounceUpAnimator = ObjectAnimator.ofFloat(
button,
"translationY",
dropTranslationY,
dropTranslationY + bounceHeight
)
bounceUpAnimator.setDuration(600)
bounceUpAnimator.interpolator = DecelerateInterpolator()
// 创建第一次回弹后下落动画
val bounceDownAnimator = ObjectAnimator.ofFloat(
button,
"translationY",
dropTranslationY + bounceHeight,
dropTranslationY
)
bounceDownAnimator.setDuration(600)
bounceDownAnimator.interpolator = AccelerateInterpolator()
// 创建第二次回弹动画
val secondBounceUpAnimator = ObjectAnimator.ofFloat(
button,
"translationY",
dropTranslationY,
startTranslationY + bounceHeight
)
secondBounceUpAnimator.setDuration(600)
secondBounceUpAnimator.interpolator = DecelerateInterpolator()
// 创建第二次回弹后下落动画
val secondBounceDownAnimator = ObjectAnimator.ofFloat(
button,
"translationY",
startTranslationY + bounceHeight,
startTranslationY
)
secondBounceDownAnimator.setDuration(600)
secondBounceDownAnimator.interpolator = LinearInterpolator()
// 创建动画集合
val bounceSet = AnimatorSet()
bounceSet.playSequentially(
bounceUpAnimator,
bounceDownAnimator,
secondBounceUpAnimator,
secondBounceDownAnimator
)
// 监听第一次回弹动画结束,开始第二次回弹动画
bounceUpAnimator.addListener(object : Animator.AnimatorListener {
override fun onAnimationStart(animation: Animator) {
binding.flDownload.isVisible = downloadList.isNotEmpty()
}
override fun onAnimationEnd(animation: Animator) {
secondBounceUpAnimator.start()
}
override fun onAnimationCancel(animation: Animator) {
}
override fun onAnimationRepeat(animation: Animator) {
}
})
// 启动掉落动画,然后开始回弹动画
dropAnimator.addListener(object : Animator.AnimatorListener {
override fun onAnimationStart(animation: Animator) {
}
override fun onAnimationEnd(animation: Animator) {
bounceUpAnimator.start()
}
override fun onAnimationCancel(animation: Animator) {
}
override fun onAnimationRepeat(animation: Animator) {
}
})
// 启动动画
dropAnimator.start()
}
fun reloadWebView() {
binding.llError.visibility = View.GONE
......@@ -215,7 +322,10 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
}
}
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
override fun shouldOverrideUrlLoading(
view: WebView?,
request: WebResourceRequest?
): Boolean {
return super.shouldOverrideUrlLoading(view, request)
}
......@@ -239,7 +349,11 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
)
}
override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {
override fun onReceivedSslError(
view: WebView?,
handler: SslErrorHandler?,
error: SslError?
) {
LogEx.logDebug(TAG, "onReceivedSslError")
super.onReceivedSslError(view, handler, error)
binding.webView.visibility = View.GONE
......@@ -254,7 +368,11 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
}
}
override fun onReceivedError(view: WebView?, request: WebResourceRequest?, error: WebResourceError?) {
override fun onReceivedError(
view: WebView?,
request: WebResourceRequest?,
error: WebResourceError?
) {
LogEx.logDebug(TAG, "onReceivedError ${error?.errorCode} ${error?.description}")
super.onReceivedError(view, request, error)
return
......@@ -296,8 +414,7 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
}
binding.tvDownloadNumber.text = downloadList.size.toString()
binding.flDownload.isVisible = downloadList.isNotEmpty()
dropAndBounceButton(binding.flDownload)
downloadList.forEach {
LogEx.logDebug(TAG, "${it.url} ${it.size} ${it.downloadId} ${it.path}")
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment