Commit ee66eb57 authored by leichao.gao's avatar leichao.gao

动画微调整

parent 99a5edf3
...@@ -20,6 +20,7 @@ import android.view.inputmethod.InputMethodManager ...@@ -20,6 +20,7 @@ import android.view.inputmethod.InputMethodManager
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.TextView import android.widget.TextView
import androidx.core.widget.addTextChangedListener import androidx.core.widget.addTextChangedListener
import com.base.browserwhite.MyApplication
import com.base.browserwhite.R import com.base.browserwhite.R
import com.base.browserwhite.bean.ConstObject import com.base.browserwhite.bean.ConstObject
import com.base.browserwhite.bean.ConstObject.searchEngineSp import com.base.browserwhite.bean.ConstObject.searchEngineSp
...@@ -38,6 +39,8 @@ import com.base.browserwhite.utils.LinkSearchUtils ...@@ -38,6 +39,8 @@ import com.base.browserwhite.utils.LinkSearchUtils
import com.base.browserwhite.utils.LogEx import com.base.browserwhite.utils.LogEx
import com.base.browserwhite.utils.SpBeanUtils import com.base.browserwhite.utils.SpBeanUtils
import com.base.browserwhite.utils.SpBeanUtils.SEARCH_RECORD_SP_KEY import com.base.browserwhite.utils.SpBeanUtils.SEARCH_RECORD_SP_KEY
import com.base.browserwhite.utils.Utils
import com.base.browserwhite.utils.Utils.dpToPx
import com.google.android.flexbox.FlexDirection import com.google.android.flexbox.FlexDirection
import com.google.android.flexbox.FlexWrap import com.google.android.flexbox.FlexWrap
import com.google.android.flexbox.FlexboxLayoutManager import com.google.android.flexbox.FlexboxLayoutManager
...@@ -69,13 +72,14 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() { ...@@ -69,13 +72,14 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
if (isHomeSearch) { if (isHomeSearch) {
startActivity(Intent(this, WebBrowserActivity::class.java).apply { startActivity(Intent(this, WebBrowserActivity::class.java).apply {
putExtra("url", link) putExtra("url", link)
putExtra("action", "search")
addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION) addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
}) })
} else { } else {
RxBus.get().post(CHANGE_SEARCH_URL, link) RxBus.get().post(CHANGE_SEARCH_URL, link)
setResult(10087)
} }
RxBus.get().post(Constants.RESET_SEARCH_VIEW, 1) RxBus.get().post(Constants.RESET_SEARCH_VIEW, 1)
setResult(10087)
finish() finish()
overridePendingTransition(0, 0) overridePendingTransition(0, 0)
} }
...@@ -86,14 +90,6 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() { ...@@ -86,14 +90,6 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
isHomeSearch = intent.extras?.getBoolean("isHomeSearch") ?: true isHomeSearch = intent.extras?.getBoolean("isHomeSearch") ?: true
val layout = binding.clTop
val layoutParams = layout.layoutParams as LinearLayout.LayoutParams
val finalPosition = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16f, getResources().displayMetrics).toInt()
// layoutParams.topMargin = getStatusBarHeight() + finalPosition
layoutParams.topMargin = finalPosition
layout.setLayoutParams(layoutParams)
layout.visibility = View.VISIBLE
switchSearch(searchEngineSp) switchSearch(searchEngineSp)
searchAdapter = SearchAdapter() searchAdapter = SearchAdapter()
...@@ -242,8 +238,7 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() { ...@@ -242,8 +238,7 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
var searchContent: String = "" var searchContent: String = ""
fun startActivityWithButtonAnimation(currentActivity: Activity, button: View, verticalOffset: Int) { fun startActivityWithButtonAnimation(currentActivity: Activity, button: View, verticalOffset: Int) {
val finalPosition = val finalPosition =MyApplication.context.dpToPx(16f)
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16f, currentActivity.resources.displayMetrics).toInt()
val buttonTop = button.top - finalPosition val buttonTop = button.top - finalPosition
val distanceToTop = -buttonTop - verticalOffset val distanceToTop = -buttonTop - verticalOffset
val animator = ObjectAnimator.ofFloat(button, "translationY", button.translationY, distanceToTop.toFloat()) val animator = ObjectAnimator.ofFloat(button, "translationY", button.translationY, distanceToTop.toFloat())
...@@ -271,23 +266,9 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() { ...@@ -271,23 +266,9 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
button: View, button: View,
verticalOffset: Int verticalOffset: Int
) { ) {
val marginEnd = MyApplication.context.dpToPx(30f)
val context: Context = button.getContext() val screenWidth =Utils.getScreenWidth(MyApplication.context) - marginEnd
val res: Resources = context.resources
val marginEnd = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 30f, res.getDisplayMetrics())
.toInt()
val metrics = DisplayMetrics()
(context as Activity).windowManager.defaultDisplay.getMetrics(metrics)
val screenWidth = context.getResources().displayMetrics.widthPixels - marginEnd
val x = screenWidth.toFloat() / button.width.toFloat() val x = screenWidth.toFloat() / button.width.toFloat()
Log.d("glc", "screenWidth:" + screenWidth)
Log.d("glc", "button.width.toFloat():" + button.width.toFloat())
val scaleXAnimator = ObjectAnimator.ofFloat(button, "scaleX", 1f, x) val scaleXAnimator = ObjectAnimator.ofFloat(button, "scaleX", 1f, x)
val scaleYAnimator = ObjectAnimator.ofFloat(button, "scaleY", 1f, 50f / 44f) val scaleYAnimator = ObjectAnimator.ofFloat(button, "scaleY", 1f, 50f / 44f)
button.pivotX = 0f button.pivotX = 0f
......
...@@ -8,6 +8,7 @@ import android.content.Context ...@@ -8,6 +8,7 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.res.Resources import android.content.res.Resources
import android.graphics.Color import android.graphics.Color
import android.text.TextUtils
import android.util.DisplayMetrics import android.util.DisplayMetrics
import android.util.TypedValue import android.util.TypedValue
import android.view.KeyEvent import android.view.KeyEvent
...@@ -19,6 +20,7 @@ import androidx.core.view.updatePadding ...@@ -19,6 +20,7 @@ import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentTransaction import androidx.fragment.app.FragmentTransaction
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.browserwhite.MyApplication
import com.base.browserwhite.R import com.base.browserwhite.R
import com.base.browserwhite.ads.AdmobMaxHelper import com.base.browserwhite.ads.AdmobMaxHelper
import com.base.browserwhite.ads.AdmobMaxHelper.lastShowInter import com.base.browserwhite.ads.AdmobMaxHelper.lastShowInter
...@@ -47,6 +49,8 @@ import com.base.browserwhite.utils.LinkSearchUtils.getYandexSearch ...@@ -47,6 +49,8 @@ import com.base.browserwhite.utils.LinkSearchUtils.getYandexSearch
import com.base.browserwhite.utils.LinkSearchUtils.handleInput import com.base.browserwhite.utils.LinkSearchUtils.handleInput
import com.base.browserwhite.utils.SpBeanUtils import com.base.browserwhite.utils.SpBeanUtils
import com.base.browserwhite.utils.SpBeanUtils.BOOKMARK_SP_KEY import com.base.browserwhite.utils.SpBeanUtils.BOOKMARK_SP_KEY
import com.base.browserwhite.utils.Utils
import com.base.browserwhite.utils.Utils.dpToPx
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Observable import io.reactivex.rxjava3.core.Observable
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
...@@ -115,25 +119,27 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() { ...@@ -115,25 +119,27 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() {
} }
addNewWebSite(url) addNewWebSite(url)
val action = intent.getStringExtra("action")?:""
if(TextUtils.equals(action,"search")){
binding.clSearch.post {
resetSearchLayout()
}
}
} }
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data) super.onActivityResult(requestCode, resultCode, data)
if(requestCode==10087){ if(requestCode==10087){
val context: Context = binding.clSearch.getContext() resetSearchLayout()
val res: Resources = context.resources }
}
// 已经获取的屏幕宽度和marginEnd
val marginEnd = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 30f, res.getDisplayMetrics()).toInt()
val metrics = DisplayMetrics()
windowManager.defaultDisplay.getMetrics(metrics)
val screenWidth = context.resources.displayMetrics.widthPixels - marginEnd
private fun resetSearchLayout(){
val screenWidth = Utils.getScreenWidth(MyApplication.context) -MyApplication.context.dpToPx(30f)
val reverseScaleXAnimator = ObjectAnimator.ofFloat(binding.clSearch, "scaleX", screenWidth / binding.clSearch.width.toFloat(), 1f) val reverseScaleXAnimator = ObjectAnimator.ofFloat(binding.clSearch, "scaleX", screenWidth / binding.clSearch.width.toFloat(), 1f)
val reverseScaleYAnimator = ObjectAnimator.ofFloat(binding.clSearch, "scaleY", 50f / 44f, 1f) val reverseScaleYAnimator = ObjectAnimator.ofFloat(binding.clSearch, "scaleY", 50f / 44f, 1f)
binding.clSearch.pivotX=0f
// 设置动画持续时间 binding.clSearch.pivotY=0f
reverseScaleXAnimator.setDuration(500) reverseScaleXAnimator.setDuration(500)
reverseScaleYAnimator.setDuration(500) reverseScaleYAnimator.setDuration(500)
val reverseAnimatorSet = AnimatorSet().apply { val reverseAnimatorSet = AnimatorSet().apply {
...@@ -144,7 +150,6 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() { ...@@ -144,7 +150,6 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() {
binding.ivShare.visibility = View.VISIBLE binding.ivShare.visibility = View.VISIBLE
} }
}
private fun checkLeftRight() { private fun checkLeftRight() {
......
package com.base.browserwhite.utils package com.base.browserwhite.utils
import android.content.Context import android.content.Context
import android.os.Build
import android.util.DisplayMetrics import android.util.DisplayMetrics
import android.util.TypedValue import android.util.TypedValue
class Utils{ import android.view.WindowManager
object Utils{
// 扩展函数:dp 转 px // 扩展函数:dp 转 px
fun Context.dpToPx(dp: Float): Float { fun Context.dpToPx(dp: Float): Float {
...@@ -11,6 +14,12 @@ class Utils{ ...@@ -11,6 +14,12 @@ class Utils{
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics) return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics)
} }
fun getScreenWidth(context: Context): Int {
val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
val display = windowManager.defaultDisplay
val metrics = DisplayMetrics()
display.getMetrics(metrics)
return metrics.widthPixels
}
} }
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