17

我创建了一个由 ViewSwitcher 组成的广告控件......

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

现在我必须给广告动画..

我试过以下

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

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

我将它设置为切换器

ViewSwitcher 切换器;

switcher.setInAnimation(inAnimation);

switcher.setOutAnimation(outAnimation);

但它不会工作..

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

4

5 回答 5

32

Try setting animation inside xml as

<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" >
于 2012-06-08T18:53:17.623 回答
9

除此之外 :

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

如果为切换器设置动画,则两个动作都会产生相同的动画。

于 2014-12-02T03:55:13.407 回答
2

什么都没有发生,或者你有什么错误?你的意思是它不会工作?

你是用switcher.showNext();还是开始动画switcher.showPrevious();

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

于 2012-05-11T09:54:11.313 回答
1

我正在提供问题中提到的替代方案。使用它,您将获得与 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>

每次设置displayChild,都需要设置动画。如果你不想要动画,你可以简单地忽略它。

PS:科特林代码

于 2019-10-23T04:39:21.390 回答
0

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

于 2012-12-17T07:17:00.997 回答