选项卡切换时平滑动画

时间:2013-11-18 01:00:52

标签: android android-actionbar android-animation

我在ViewPager中使用ActionBar.Tabs,看起来像enter image description here

我实施了ActionBar.TabListenerViewPager.OnPageChangeListener来支持当用户在ViewPager中滑动页面时,标签指示符会相应更改(蓝色指示符将移动到相应的标签页)。

现在我意识到蓝色指示器在没有任何动画的情况下发生变化,并且看起来不太好。 (当我从tab1滑动到tab2时,蓝色指示符在tab1下消失并出现在tab2下面)。有没有办法改变它,以便当我切换标签时,蓝色标签指示在标签之间平滑移动?

2 个答案:

答案 0 :(得分:0)

使用设计支持库中的TabLayout类: https://developer.android.com/reference/android/support/design/widget/TabLayout.html

它有一个setupWithViewPager可以轻松地将其与ViewPager连接,并且它有一个滑动指示条。

答案 1 :(得分:0)

在我的情况下,它是由于TabSelectedListener而出现的。在tab_layout.addOnTabSelectedListener()中,我改写了onTabSelected方法,在该方法中我没有延迟地打开了另一个活动。

view.tab_layout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
    override fun onTabReselected(tab: TabLayout.Tab?) {
    }

    override fun onTabUnselected(tab: TabLayout.Tab?) {
    }

    override fun onTabSelected(tab: TabLayout.Tab?) {
        if (tab?.position == 1) {
            MapsActivity.showScreen(this@ThisFragment)
        }
    }
})

我拖延了那个方法:

    override fun onTabSelected(tab: TabLayout.Tab?) {
        if (tab?.position == 1) {
            // Show tab animation and open an activity.
            view.tab_layout.postDelayed({
                // This check is optional.
                if (isAdded && view.tab_layout.selectedTabPosition == 1) {
                    MapsActivity.showScreen(this@YourFragment)
                }
            }, 250)
        }
    }

我也尝试更改持续时间值,但不知道如何(无济于事):

view.tab_layout.animation = object: Animation() {}
view.tab_layout.animation.duration = 1000
view.tab_layout.layoutAnimation = LayoutAnimationController(object: Animation() {})
view.tab_layout.layoutAnimation.delay = 1000f
view.tab_layout.layoutAnimation.animation.duration = 1000