ボタンを押すと全体として移動する必要がある ViewPager があります。これにはアニメーションを使用します。
それを押すと、「x」を翻訳します。新しい位置を維持するために setFillAfter(true) を使用します。しかし、ViewPager のページを変更すると、元の x 位置に戻ります!
この問題は Android 4.1 でのみ見られましたが、Android 4.0 では問題ありません! したがって、Android ではある種の回帰のように見えます。
他のすべてのものなしで問題を再現できるテストプロジェクトを添付しました。プロジェクトを Eclipse にインポートして自分の目で確かめるために、これを理解するのを手伝ってくれるのが一番いいと思います。
ビデオにも追加しました。1 つは問題が発生している HTC One X で、もう 1 つは問題が発生していない Android 4.0 搭載のタブレットです。
私は必死にこの醜い副作用を修正しようとしてきましたが、今までうまくいきませんでした...
(動画ファイルが大きくてすみません…)
編集:
以下を追加しました。
@Override
public void onAnimationEnd(Animation animation) {
RelativeLayout.LayoutParams lp = (android.widget.RelativeLayout.LayoutParams) myViewPager.getLayoutParams();
if (!i)
lp.setMargins(300,0,0,0);
else
lp.setMargins(0,0,0,0);
myViewPager.setLayoutParams(lp);
}
その後、正しい位置にとどまりますが、アニメーションが最後に表示されているようにすばやく「ちらつき」、マージンを変更すると、アニメーション後のオフセットが表示されます。その後、正しい位置にジャンプします。