2
myImageView.clearAnimation()を呼び出した後でアニメーションを再開するソリューションが見つかりません。アニメーションはonPageSelectedに設定されますが、startoffsetのタイムアウトは機能しません。Android:クリア後にアニメーションを再開する方法
また、他の方法で、元の画像ビューを得るためにアニメーションをキャンセルし、 onPageSelectedが呼び出されたときに、同じビューのアニメーションに対して同じアニメーションを開始することができます。
public class myActivity extends Activity {
...
private ImageView myImageView;
private static final Integer startOffset = 5000;
private static final Integer duration= 2500;
@Override
public void onCreate(Bundle savedInstanceState) {
...
currentImageView = (ImageView) findViewById(R.id.dashboardIndicator);
currentImageView.setAnimation(indicatorAnimation());
...
}
private Animation indicatorAnimation() {
Animation alphaAnimation = new AlphaAnimation(1, 0.2F);
alphaAnimation.setInterpolator(new AccelerateInterpolator());
alphaAnimation.setStartOffset(startOffset);
alphaAnimation.setDuration(duration);
alphaAnimation.setFillAfter(true);
return alphaAnimation;
}
ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// Need here to start the animation again
myImageView.setAnimation(indicatorAnimation());
// Set's the animation but don't starts it after the startOffset timeout
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }
@Override
public void onPageScrollStateChanged(int position) {
// Need here to cancel the animation to have no Alpha value on the imageview
myImageView.clearAnimation();
// image view 100% visible
}
};}
アニメーションは、ページ間をスクロールするときに停止する必要があります。スクロールが終了すると、タイムアウト後にアニメーションが開始されます。 –