2

Web 要求からのデータが取り込まれたリスト ビューがあります。応答を待っている間、別のビューを上に重ねて ( mNoDataLayout)、プログレス バーと、データが来ていることをユーザーに知らせるその他の情報を表示します。データが到着したら、オーバーレイ ビューをフェードアウトして、入力されたリスト ビューを表示します。

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

問題は、このアニメーションが常に実行されるとは限らないことです。うまくいくこともあれば、うまくいかないこともあります。

4

1 に答える 1

0

修正は、オーバーレイ ビューの高さをmNoDataLayout画面の高さに設定することでした。以前はmatch_parent、大量のリスト データが到着すると、リスト ビューが非常に大きくなり、オーバーレイ ビューが非常に大きくなる可能性があることを意味するように設定していました。

オーバーレイ ビューを小さく設定すると、他に変更を加えることなくアルファ アニメーションが機能し始めました。

おそらく Android は、レンダリングのフィル レートを最適化するために、非常に大きなビューでアルファ アニメーションを静かに強制終了しています。しかし、とにかくこれらのピクセルは画面外にあるため、これはおそらく、シザリング/カリングも行っていないことを意味します。これは奇妙に思えます.

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

これは、Samsung Galaxy Note 4 に搭載されていました。

于 2015-11-25T20:18:46.357 に答える