そのため、レイアウトにImageViewがあり、ユーザーが後者をスワイプしたときに、ImageViewを右または左にスライドさせたいと思いました。以下に示すように、TranslateAnimationを使用してImageViewを翻訳しました。
ImageView logoFocus = (ImageView) findViewById(R.id.logoFocus);
Animation animSurprise2Movement = new TranslateAnimation(logoFocus.getLeft(), logoFocus.getLeft()+150, logoFocus.getTop(), logoFocus.getTop());
animSurprise2Movement.setDuration(1000);
animSurprise2Movement.setFillAfter(true);
animSurprise2Movement.setFillEnabled(true);
logoFocus.startAnimation(animSurprise2Movement);
このコードを[右にスワイプ]セクションに配置しました。同じコードですが、[左にスワイプ]セクションにgetLeft()-150を使用しています。初めてスワイプしたときは期待どおりに動作しますが、反対方向にスワイプすると、ImageViewは元の位置に戻るだけでなく、元の位置に戻ってから反対方向にスライドします。
Animationに設定したAnimationListenerのonAnimationEndメソッドに次のものを追加しようとしましたが、無駄でした。
MarginLayoutParams params = (MarginLayoutParams) logoFocus.getLayoutParams();
params.setMargins(logoFocus.getLeft()+150, logoFocus.getTop(), logoFocus.getRight(), logoFocus.getBottom());
logoFocus.setLayoutParams(params);
同じ方法で次のことも試しましたが、どちらも期待どおりに機能しませんでした。
((RelativeLayout.LayoutParams) logoFocus.getLayoutParams()).leftMargin += 150;
logoFocus.requestLayout();
誰か助けてくれませんか?setFillAfter(true)とsetFillEnabled(true)を使用しても、アニメーションの後で位置が変わらないようです。TranslateAnimationを使用する代わりの方法はありますか?
私が得ることができるどんな助けにも感謝します。:)