2

アクティビティの遷移に使用する回転アニメーションのようなアニメーションを xml で作成しました。最初の部分は回転とスケーリングのアニメーションで、半回転を正常に表示するために一緒に機能しますが、開始オフセットでそれらの逆を追加すると、アニメーションではなく空白のビューが表示されます...アニメーションの最初の部分も表示されません正常に動作..

最初の部分だけがあり、正しく機能している場合のxmlコードを次に示します..

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<rotate
    android:duration="2000"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="-15"
    android:toYScale="0.0" />

<scale
    android:duration="2000"
    android:fromXScale="1"
    android:fromYScale="1"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="0"
    android:toYScale="1" />


</set>

しかし、リバースコードを追加すると、常に空白になります...

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<rotate
    android:duration="2000"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="-15"
    android:toYScale="0.0" />

<scale
    android:duration="2000"
    android:fromXScale="1"
    android:fromYScale="1"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="0"
    android:toYScale="1" />


 <rotate
    android:startOffset="2000"
    android:duration="2000"
    android:fromDegrees="-15"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="0"
    android:toYScale="0.0" />

  <scale
    android:startOffset="2000"
    android:duration="2000"
    android:fromXScale="0"
    android:fromYScale="1"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="1"
    android:toYScale="1" />


  </set>

だからみんな私が間違っているところを教えてください...

4

1 に答える 1

4

逆の効果を得るためにアニメーションを複製する必要はありません。android:repeateMode = "reverse"およびandroid:repeatCount = "1"を使用できます

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

<rotate
    android:duration="2000"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="1"
    android:repeatMode="reverse"
    android:toDegrees="-15" />


<scale
    android:duration="2000"
    android:fromXScale="1"
    android:fromYScale="1"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="1"
    android:repeatMode="reverse"
    android:toXScale="0"
    android:toYScale="1" />

</set>

repeatCountとアニメーションrepeatModeの両方を設定する必要がありますscale。残念ながら、実装のバグにより、属性rotateで直接使用することはできません。setAnimationSet

ただし、このアニメーションは 1 つのアクティビティにのみ適用されます。実際に最初のアクティビティを消し、次に 2 番目のアクティビティを表示したい場合は、アニメーションを 2 つに分割する必要があります。最初の部分にはあなたrotatescale直接のアニメーションがあり、2 番目の部分には反転rotatescaleアニメーションがあります。setしたがって、基本的には、4 つのアニメーションを 2 つのファイルに分割する必要があります。次に、新しいアクティビティを開始するために、次の 2 つのアニメーションを使用する必要があります。

overridePendingTransition(R.anim.direct, R.anim.reversed);
于 2012-07-16T11:39:15.623 に答える