动画完成后如何从Secondactivity移动到Mainactivity?
How to move from Secondactivity to Mainactivity after animation is complete?
抱歉,我对堆栈溢出有点陌生,但希望这个问题是可以理解的!
我和一位工作人员 memeber/community 交谈,他向我展示了从 1 activity(在我的例子中是存储动画的 GlobeActivity)到另一个 activity(MainActivity,其中username/password 已存储)。但是动画并没有出现,而是直接切到了MainActivity。
任何人都对为什么以及如何制作它有一些建议,以便当 动画完成时,它重新定向/转换到 MainActivity 而没有[=26] =] 使用按钮?
到目前为止,这是我的代码:
GlobeActivity(我的 SecondActivity):
package com.example.testerino2022
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
class GlobeActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_globe)
supportActionBar?.hide()
val textView = findViewById<TextView>(R.id.textGlobeScreen)
textView.animate().translationX(1050F).setDuration(1000).setStartDelay(2500)
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
finish()
}
}
MainActivity(里面有默认代码);
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
textView.animate()
.translationX(1050F)
.setDuration(1000)
.setStartDelay(2500)
.withEndAction {
startActivity(Intent(context, MainActivity::class.java))
finish()
}
您是否已将应用程序清单中的启动器 activity 从 MainActivity 更改为 GlobeActivity?
您可以使用动画侦听器
textView.animate().translationX(1050F).setDuration(1000).setStartDelay(2500).setListener(
object: Animator.AnimatorListener{
override fun onAnimationStart(p0: Animator?) {
TODO("Not yet implemented")
}
override fun onAnimationEnd(p0: Animator?) {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
finish()
}
override fun onAnimationCancel(p0: Animator?) {
TODO("Not yet implemented")
}
override fun onAnimationRepeat(p0: Animator?) {
TODO("Not yet implemented")
}
}
)
您可以使用您已经在使用的 ViewPropertyAnimator
内容轻松完成此操作 - 只需添加 withEndAction
:
textView.animate()
.translationX(1050F)
.setDuration(1000)
.setStartDelay(2500)
.withEndAction {
startActivity(Intent(context, MainActivity::class.java))
finish()
}
假设是 ImageView,您应该听取正在设置动画的视图或元素。您可以使用 ViewPropertyAnimator 执行此操作。
ImageView imageview = findViewById(R.id.imageView);
imageView.animate()
.translationX(1050F)
.setDuration(2000)
.setStartDelay(1000)
.withEndAction {
startActivity(Intent(context, MainActivity::class.java))
finish()
}
说明
translationX(float value)
- 此方法将导致视图的 translationX 属性 动画到指定值
setDuration(long duration)
- 设置为请求的属性设置动画的底层动画师的持续时间。
setStartDelay(long startDelay)
- 为为请求的属性设置动画的底层动画师设置 startDelay。
withEndAction(Runnable runnable)
- 指定下一个动画结束时要发生的动作。
有关这方面的更多信息,请查看:-> ViewPropertyAnimator
抱歉,我对堆栈溢出有点陌生,但希望这个问题是可以理解的!
我和一位工作人员 memeber/community 交谈,他向我展示了从 1 activity(在我的例子中是存储动画的 GlobeActivity)到另一个 activity(MainActivity,其中username/password 已存储)。但是动画并没有出现,而是直接切到了MainActivity。
任何人都对为什么以及如何制作它有一些建议,以便当 动画完成时,它重新定向/转换到 MainActivity 而没有[=26] =] 使用按钮?
到目前为止,这是我的代码:
GlobeActivity(我的 SecondActivity):
package com.example.testerino2022
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
class GlobeActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_globe)
supportActionBar?.hide()
val textView = findViewById<TextView>(R.id.textGlobeScreen)
textView.animate().translationX(1050F).setDuration(1000).setStartDelay(2500)
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
finish()
}
}
MainActivity(里面有默认代码);
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
textView.animate()
.translationX(1050F)
.setDuration(1000)
.setStartDelay(2500)
.withEndAction {
startActivity(Intent(context, MainActivity::class.java))
finish()
}
您是否已将应用程序清单中的启动器 activity 从 MainActivity 更改为 GlobeActivity?
您可以使用动画侦听器
textView.animate().translationX(1050F).setDuration(1000).setStartDelay(2500).setListener(
object: Animator.AnimatorListener{
override fun onAnimationStart(p0: Animator?) {
TODO("Not yet implemented")
}
override fun onAnimationEnd(p0: Animator?) {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
finish()
}
override fun onAnimationCancel(p0: Animator?) {
TODO("Not yet implemented")
}
override fun onAnimationRepeat(p0: Animator?) {
TODO("Not yet implemented")
}
}
)
您可以使用您已经在使用的 ViewPropertyAnimator
内容轻松完成此操作 - 只需添加 withEndAction
:
textView.animate()
.translationX(1050F)
.setDuration(1000)
.setStartDelay(2500)
.withEndAction {
startActivity(Intent(context, MainActivity::class.java))
finish()
}
假设是 ImageView,您应该听取正在设置动画的视图或元素。您可以使用 ViewPropertyAnimator 执行此操作。
ImageView imageview = findViewById(R.id.imageView);
imageView.animate()
.translationX(1050F)
.setDuration(2000)
.setStartDelay(1000)
.withEndAction {
startActivity(Intent(context, MainActivity::class.java))
finish()
}
说明
translationX(float value)
- 此方法将导致视图的 translationX 属性 动画到指定值setDuration(long duration)
- 设置为请求的属性设置动画的底层动画师的持续时间。setStartDelay(long startDelay)
- 为为请求的属性设置动画的底层动画师设置 startDelay。withEndAction(Runnable runnable)
- 指定下一个动画结束时要发生的动作。
有关这方面的更多信息,请查看:-> ViewPropertyAnimator