ㄅ歉,寫在生命週期,有點牽強 哈哈
寫生命週期寫到快沒梗了,靈光一閃,就寫了這篇牽強的~這個作品唯一有扯到的生命週期,就只是 onCreate()
的部分而已!
這種動畫比較像是帥一下的,沒啥實質效果哈哈XD而動畫的概念想要營造出,在整個 app 開始前,可以先秀一下自己公司的 logo 啦~或者是贊助的乾爹廠商之類的,所以需要寫在 Activity
的 onCreate()
時期,在這個時期,看似是前面這個動畫跑了,才進入主程式,但其實主程式會跟著動畫一起生成,這時候,我先把主程式的 Drawer
先隱藏起來,當整個動畫結束之後,再把 Drawer
顯示出來。
這邊可以觀察一下,前面的動畫其實也是一個 layout
,而這個 layout
跟後面的 Drawer
有個蠻大的差別,就是有無 Toolbar
最上面綠色那一列!如果不把 Drawer
先隱藏起來,那個這個 Toolbar
會因為 Drawer
的產生而出現,就不會有滿版的效果了,如下。
以下是比較冗長的實作方法,較好的做法將在下一篇做討論,程式碼也會一併提供唷!
設定動畫
這邊我使用了 DecorView
去當作 container
,這個 decorView
是整個 FrameLayout
的頂層,意思就是說我希望把這個開場動畫,直接蓋在 app 的最上層的意思
fun setStartAnim(){
val decorView = window.decorView as ViewGroup
val inflater = getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val startLayoutView = inflater.inflate(R.layout.start_layout, null)
var performAnimation:Animation = AnimationUtils.loadAnimation(this, R.anim.fade_in);
decorView.addView(startLayoutView, 0)
val animListnerEnd = animListnerEnd()
performAnimation.setAnimationListener(animListnerEnd)
startLayoutView.startAnimation(performAnimation)
}
設定動畫的監聽 (animation listener)
為了要達到上述的效果,我先執行 fade in ,並且監聽這個動畫,當 fade in 動畫整個結束之後,我立刻接 fade out,達到這個效果,並且在最後將原本隱藏的 drawer_layout
顯示出來,並且把動畫隱藏起來,在下一篇將會講解這樣的寫法還能夠如何改(這個版本太過冗長了)
fade_in
inner class animListner_fadein():Animation.AnimationListener{
override fun onAnimationRepeat(p0: Animation?) {
}
override fun onAnimationEnd(p0: Animation?) {
val performAnimation:Animation = AnimationUtils.loadAnimation(this, R.anim.fade_out);
val animListner_fadeout = animListner_fadeout()
performAnimation.setAnimationListener(animListner_fadeout)
startLayoutView.startAnimation(performAnimation)
}
override fun onAnimationStart(p0: Animation?) {
}
}
fade_out
inner class animListner_fadeout():Animation.AnimationListener{
override fun onAnimationRepeat(p0: Animation?) {
}
override fun onAnimationEnd(p0: Animation?) {
start_anim.visibility = GONE
drawer_layout.visibility = VISIBLE
}
override fun onAnimationStart(p0: Animation?) {
}
}
動畫沒有 Toolbar
,但是主程式 (drawer_layout) 有,怎辦?
如同上述所講的,只要把主程式先隱藏,在整個動畫結束之後,再顯示出來即可!
為何從本機進來的圖片,為何都有奇怪的背景圖?
在新增 image Asset
的時候,一直覺得很奇怪,為何明明已經去背的 png
檔案了,加進來之後 Android Studio
自動幫我填上一層奇怪的背景,才知道問題出在這邊
他預設了的 shape
是正方形的,所以會自動填成正方形的形狀,只要把這個選項改成 None,就會依照原圖的外觀去長囉!