Android动画失效

记今天在应用中使用开源控件FloatingActionButton时,弹出按钮的动画失效(即没有播放动画效果)。

调试了很久后发现,动画的失效居然是FragmentViewPagerAdapter中的Fragment数量(或者说某个Fragment)引起的。如下所示,将添加某个fragment的语句注释掉之后动画生效了,取消注释之后动画又失效了。

final ArrayList<BaseFragment> viewPagerList = new ArrayList<BaseFragment>();
homeFragment = new HomeFragment();
blockFragment = new BlockFragment();
localFragment = new CityLocationFragment();
viewPagerList.add(homeFragment);
viewPagerList.add(blockFragment);
viewPagerList.add(localFragment);
// viewPagerList.add(new SuiShouPaiFragment());          <----   注释此行动画生效

fragmentAdapter.setList(viewPagerList);
viewPager.setAdapter(fragmentAdapter);


接下来继续跟踪问题,发现SuiShouPaiFragment中有这么一段,注释了就好了:

linearLayout.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mLineImage
.getLayoutParams();
int marginleft = m_lin_top.getLeft()
+ (mSelectText.getWidth() - mLineImage
.getWidth()) / 2;
lp.leftMargin = marginleft;
mLineImage.setLayoutParams(lp);
}
});

看了下这段代码的功能,真的是醉了,addOnGlobalLayoutListener是监听布局的变化,在监听布局的变化后又去修改布局,导致onGlobalLayout方法一直在回调,从未停过。

这就导致了FloatingActionButton动画的失效。旧代码真的是各种坑啊!调试了一个晚上!希望大家以后写代码注意点。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番茄大圣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值