2

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

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

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

4

1 回答 1

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 上。

于 2015-11-25T20:18:46.357 回答