RecyclerView.ItemDecorationを使用します。
リサイクラのコンテンツをレンダリングするときにItemDecorationが複数回呼び出されるため、ここでは重いものとはみなされませんが、一部のビューが表示されたときに通知することができます。
ItemDecorationは、いくつかの方法がありますが、あなたが実装する必要があるものである:
public void onDrawOver(Canvas c, RecyclerView parent, State state);
または多分あなたは何の違いに気付かないでしょうが、補完するために、あなたが求めている場合については
public void onDraw(Canvas c, RecyclerView parent, State state);
あなたの行がレンダリングされる前に最初のものが呼び出され、その上にペイントできるようになり、2番目のものが呼び出されて行がレンダリングされるので、「下に」何かをペイントすることができます。
この場合、ビューのサイズを計算するだけで何もペイントする必要はありません。そのミッションのためには、レンダリングビューを取得し、ビデオでどのレンダリングビューを検出する必要があります。
@Override
public void onDraw(Canvas canvas, RecyclerView parent, RecyclerView.State state) {
int childCount = parent.getChildCount();
for (int i = 0; i < childCount - 1; i++) {
View child = parent.getChildAt(i);
int adapterPos = parent.getChildAdapterPosition(child);
int viewType = parent.getAdapter().getItemViewType(adapterPos);
... Your code here ...
// if(viewType == THE_EXPECTED_TYPE) {
// if(child.top() == parent.top()) {
// notifyViewIsVisibleAt100(); //100%; make your calcs to ensure your 75%
// }
// }
}
}
最初に、recyclerViewにItemDecorationを登録する必要があります。
recyclerView.addItemDecoration(theItemDecoration);
OK私はそれはあなたがビデオを一時停止し、それを再生したい行きますか。?そこから再び一時停止されます。 @ Janwilx72 –