android - 如何为文本视图(文本大小)的共享元素转换进行自定义转换
问题描述
我正在尝试在 36sp textSize 的 TextView 到 24sp textSize 的 TextView 的两个活动之间进行共享转换,但它无法正常工作,因为当动画开始时,textsize 在下一帧中转换为 24sp 大小。
这是 SharedElement 转换开始的活动
MainActivity.kt
class MainActivity : AppCompatActivity() {
private var shortAnimationDuration: Int = 500
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val companyNameMainActivity = findViewById<TextView>(R.id.companyNameMainActivity)
companyNameMainActivity.tag = "companyNameMainActivity"
// Log.e(TAG, companyNameMainActivity.tag as String)
//window.sharedElementExitTransition = TextViewTransition()
//window.sharedElementEnterTransition = TextViewTransition()
setEnterSharedElementCallback(EnterSharedElementCallback(this))
companyNameMainActivity.apply {
alpha = 0f
visibility = View.VISIBLE
animate()
.alpha(1f)
.setDuration(shortAnimationDuration.toLong())
.setListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator) {
startActivity(
Intent(this@MainActivity, AuthActivity::class.java),
ActivityOptions.makeSceneTransitionAnimation(
this@MainActivity,
UtilPair(
findViewById<ImageView>(R.id.companyNameMainActivity),
AuthActivity.COMPANY_NAME
),
).toBundle()
)
}
})
}
}
override fun onStop() {
super.onStop()
finishAfterTransition()
}
companion object {
const val TAG = "MainActivity"
}
}
这是 SharedElement 过渡结束的活动
AuthActivity.kt
class AuthActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_auth)
// window.sharedElementExitTransition = TextViewTransition()
// window.sharedElementEnterTransition = TextViewTransition()
setEnterSharedElementCallback(EnterSharedElementCallback(this))
ViewCompat.setTransitionName(findViewById(R.id.companyNameAuthActivity), COMPANY_NAME)
}
// todo improve backPress
override fun onBackPressed() {
overridePendingTransition(0,0)
finish()
}
companion object {
const val TAG = "AuthActivity"
const val COMPANY_NAME = "COMPANY_NAME";
}
}
解决方案
推荐阅读
- tensorflow - 将 SMOTE 与 tensorflow 的 ImageDataGenerator Flow From Directory 一起使用
- azureservicebus - 如何查看服务总线主题中的第二组消息?
- linux - 比较两个文本文件,如果第二个文件的行包含第一个文件的两列,则删除该行
- javascript - Tailwindcss – 动态更新 UI 的最佳方式(无 JS 框架)
- mysql - OPENQUERY SQL Server MYSQL 更新
- alexa - 创建技能后如何做某事?
- java - 如果没有中断,Java 开关会运行所有情况
- azure - Azure TTS 神经语音音频文件以 1 字节大小异常创建
- python - 当我尝试安装 easy_install 电子邮件时,如何解决没有名为“email.MIMEMultipart”的模块?
- python - 如何让 Discord.py 获得许多用户对特定表情符号的反应?