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

update

parent d8d2a736
package com.base.browserwhite.ui.activity.webbrowser 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.annotation.SuppressLint
import android.app.Dialog import android.app.Dialog
import android.content.Context import android.content.Context
import android.net.Uri import android.net.Uri
import android.net.http.SslError import android.net.http.SslError
import android.view.View 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.CookieManager
import android.webkit.JsResult import android.webkit.JsResult
import android.webkit.SslErrorHandler import android.webkit.SslErrorHandler
...@@ -25,8 +31,8 @@ import com.base.browserwhite.bean.HistoryBean ...@@ -25,8 +31,8 @@ import com.base.browserwhite.bean.HistoryBean
import com.base.browserwhite.databinding.FragmentWebViewBinding import com.base.browserwhite.databinding.FragmentWebViewBinding
import com.base.browserwhite.ui.activity.download.DownloadAdapter import com.base.browserwhite.ui.activity.download.DownloadAdapter
import com.base.browserwhite.ui.activity.download.DownloadDialog.showDownloadFinishDialog 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.activity.download.DownloadDialog.showDownloadVideoDialog
import com.base.browserwhite.ui.fragment.BaseFragment
import com.base.browserwhite.utils.ColorUtils import com.base.browserwhite.utils.ColorUtils
import com.base.browserwhite.utils.DownloadUtils import com.base.browserwhite.utils.DownloadUtils
import com.base.browserwhite.utils.DownloadUtils.getDownloadJson import com.base.browserwhite.utils.DownloadUtils.getDownloadJson
...@@ -120,6 +126,107 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -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() { fun reloadWebView() {
binding.llError.visibility = View.GONE binding.llError.visibility = View.GONE
...@@ -215,7 +322,10 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -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) return super.shouldOverrideUrlLoading(view, request)
} }
...@@ -239,7 +349,11 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -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") LogEx.logDebug(TAG, "onReceivedSslError")
super.onReceivedSslError(view, handler, error) super.onReceivedSslError(view, handler, error)
binding.webView.visibility = View.GONE binding.webView.visibility = View.GONE
...@@ -254,7 +368,11 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -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}") LogEx.logDebug(TAG, "onReceivedError ${error?.errorCode} ${error?.description}")
super.onReceivedError(view, request, error) super.onReceivedError(view, request, error)
return return
...@@ -296,8 +414,7 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -296,8 +414,7 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
} }
binding.tvDownloadNumber.text = downloadList.size.toString() binding.tvDownloadNumber.text = downloadList.size.toString()
binding.flDownload.isVisible = downloadList.isNotEmpty() dropAndBounceButton(binding.flDownload)
downloadList.forEach { downloadList.forEach {
LogEx.logDebug(TAG, "${it.url} ${it.size} ${it.downloadId} ${it.path}") 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