iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 28
0

TransitionActivity

今天我們想要來試試看 Android 所提供原生的轉場動畫。

實作流程

初始化

MainActivity.kt

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        explodeBtn.setOnClickListener { startTransitionWithFlag("explode") }
        slideBtn.setOnClickListener { startTransitionWithFlag("slide") }
        fadeBtn.setOnClickListener { startTransitionWithFlag("fade") }

    }

我們來看一下,我們用三個 button 來顯示 Activtiy 之間的轉換效果。
三個不同的 Button 會透過給予不同的 flag 來達成不同的轉場效果。

MainActivity.kt

private fun startTransitionWithFlag(flag:String) {
        val intent = Intent(this, Main2Activity::class.java)
        intent.putExtra("flag", flag)
        startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(this).toBundle())
    }

這裡我們可以看到我們就像一般時候使用 intent 一樣轉換到另一個 activity 。
但我們把我們需要轉場動畫的訊息(ActivityOptionsCompat.makeSceneTransitionAnimation)一起帶過去另一個 Activity
同時我們也把 flag 變數一起帶過去,另一個 Activity ,方便我們做判斷。

接下來只要到我們另一個 Activity 去告訴 Android 我們需要轉場動畫唷。

class Main2Activity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_main2)
        setupTrainsition()
    }

    private fun setupTrainsition() {

        when(intent.getStringExtra("flag")){
            "explode" -> {
                val explodeTransition = Explode()
                explodeTransition.duration = 1000
                window.enterTransition = explodeTransition
                window.exitTransition = explodeTransition
            }

            "slide" -> {
                val slideTransition = Slide()
                slideTransition.duration = 1000
                window.enterTransition = slideTransition
                window.exitTransition = slideTransition
            }

            "fade" -> {
                val fadeTransition = Fade()
                fadeTransition.duration = 1000
                window.enterTransition = fadeTransition
                window.exitTransition = fadeTransition
            }
        }
    }
}

我們可以看到我們利用 window.enterTransition 來設定進入或離開 Activity 時需要什麼動畫。
也可以設定 duration 所需要的時間。

是不是很簡單啊~~

今天就先到這裡囉,我們明天見~~~


上一篇
Day27_LayoutSwitch
下一篇
Day29_MediaRecorder_建立檔案
系列文
發現新大陸-Android Kotlin 開發之路30

尚未有邦友留言

立即登入留言