17

ViewSwitcherで構成される1つのアドバタイズメントコントロールを作成しました。

そのコントロールでは、広告がテキストまたは画像のいずれかであるため、ImageViewとTextViewがあります。

今、私はアドバイスにアニメーションを与える必要があります。

私はフォローしてみました

Animation 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

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" >
于 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と同じアニメーションを実現できます。

showNextの代わりに、displayedChildを1に設定できます。

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

showPreviousの代わりに、displayedChildを0に設定できます。

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:Kotlinコード

于 2019-10-23T04:39:21.390 に答える
0

「switcher.showNext();」最後のレイアウトと「switcher.showPrevious();」から 最初のレイアウトからエラーが発生します。これは、stack.soのstackoverflowおよびstackunderflowの状況に類似している必要があります。したがって、「showNext()」を呼び出す前に、現在の最後のレイアウトではないこと、および「showPrevious()」を呼び出すときに最初のレイアウトにないことを確認してください。 "。私はこの単純な間違いに出くわしました。これを投稿して申し訳ありませんが、私は(新人)まだ投稿にコメントする権限がありません

于 2012-12-17T07:17:00.997 に答える