Android ViewPropertyAnimator默默地在大型视图上失败alpha动画

时间:2015-11-25 20:18:46

标签: android viewpropertyanimator

我有一个列表视图,其中填充了来自Web请求的数据。在等待响应时,我在顶部(mNoDataLayout)覆盖另一个视图,其中包含进度条和其他信息,告诉用户数据即将到来。一旦数据到达,我想淡出叠加视图以显示填充的列表视图:

mNoDataLayout.animate().setDuration(300).alpha(0.f);

问题是这个动画并不总是运行。有时是有效的,有时则不然。

1 个答案:

答案 0 :(得分:0)

修复方法是将叠加视图mNoDataLayout的高度设置为屏幕高度。以前我把它设置为match_parent,这意味着当大量列表数据到达时,列表视图可能非常大,这导致叠加视图非常大。

一旦我将叠加视图设置得更小,alpha动画就开始工作而没有任何其他更改。

也许Android会默默地杀死非常大的视图上的alpha动画,以优化渲染填充率。但由于这些像素无论如何都在屏幕外,这可能意味着它也没有进行任何剪切/剔除,这似乎很奇怪。

    DisplayMetrics displayMetrics = getActivity().getResources().getDisplayMetrics();
    ViewGroup.LayoutParams layoutParams = mNoDataLayout.getLayoutParams();
    layoutParams.height = displayMetrics.heightPixels;
    mNoDataLayout.setLayoutParams(layoutParams);

这是在三星Galaxy Note 4上。