如何为ViewSwitcher提供动画

时间:2012-05-10 10:29:10

标签: android android-animation

我创建了一个广告控件,它由ViewSwitcher ....

组成

在该控件中我有ImageView和TextView,因为广告是文本或图像..

现在我必须给advetisements动画..

我试过以下

  

动画inAnimation = AnimationUtils.loadAnimation(this,android.R.anim.slide_in_left);       inAnimation.setDuration(1500);

     

动画outAnimation = AnimationUtils.loadAnimation(这个,   android.R.anim.slide_out_right); outAnimation.setDuration(1500);

我将其设置为切换台

  

ViewSwitcher切换器;

     

switcher.setInAnimation(inAnimation);

     

switcher.setOutAnimation(outAnimation);

但它不起作用..

请给我任何其他选择..或者如果使用上面的代码是错误的,那么如何使用它?

5 个答案:

答案 0 :(得分:30)

尝试将xml中的动画设置为

<ViewSwitcher
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:inAnimation="@android:anim/slide_in_left"
    android:outAnimation="@android:anim/slide_out_right" >

答案 1 :(得分:8)

除此之外:

照顾switcher.showNext();或者switcher.showPrevious();

如果您将动画设置到切换台,则两个动作都会生成相同动画。

答案 2 :(得分:2)

什么都没发生或者你有错误?你的意思是行不通的?

您是否使用switcher.showNext();switcher.showPrevious();

开始制作动画

希望它会有所帮助..干杯;)

答案 3 :(得分:0)

“switcher.showNext();”从最后一个布局和“switcher.showPrevious();”从第一个布局给出错误。它必须类似于stack.flow中的stackoverflow和stackunderflow情况。在调用“showNext()”之前,检查它不是您当前所在的最后一个布局,并且在调用“showPrevious()时您不在第一个布局中”。我遇到了这个简单的错误。 很抱歉发布这个帖子,我(新手)还没有授权对帖子发表评论

答案 4 :(得分:0)

我正在提出问题中提到的替代方案。使用此方法,您将获得与ViewPager相同的动画。

您可以将displayChild设置为1,而不是showNext。

switcherView?.inAnimation = AnimationUtils.loadAnimation(baseActivity, R.anim.slide_in_right)
switcherView?.outAnimation = AnimationUtils.loadAnimation(baseActivity, R.anim.slide_out_left)
switcherView?.displayedChild = 1

您可以将displayChild设置为0,而不是showPrevious。

switcherView?.inAnimation = AnimationUtils.loadAnimation(baseActivity, R.anim.slide_in_left)
switcherView?.outAnimation = AnimationUtils.loadAnimation(baseActivity, R.anim.slide_out_right)
switcherView?.displayedChild = 0

动画文件: R.anim.slide_in_right:

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_shortAnimTime"
        android:fromXDelta="100%p"
        android:toXDelta="0" />
</set>

R.anim.slide_out_left

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_shortAnimTime"
        android:fromXDelta="0"
        android:toXDelta="-100%p" />
</set>

R.anim.slide_in_left

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_shortAnimTime"
        android:fromXDelta="-100%p"
        android:toXDelta="0" />
</set>

R.anim.slide_out_right

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_shortAnimTime"
        android:fromXDelta="0"
        android:toXDelta="100%p" />
</set>

每次设置displayChildren时,都需要设置动画。如果您不想要动画,可以忽略它,仅此而已。祝您编码愉快!

PS:Kotlin代码