我有一个列表视图,其中填充了来自Web请求的数据。在等待响应时,我在顶部(mNoDataLayout
)覆盖另一个视图,其中包含进度条和其他信息,告诉用户数据即将到来。一旦数据到达,我想淡出叠加视图以显示填充的列表视图:
mNoDataLayout.animate().setDuration(300).alpha(0.f);
问题是这个动画并不总是运行。有时是有效的,有时则不然。
答案 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上。