Jan*_*x72 10 android android-recyclerview
我想播放一个视频,当它在recyclerView适配器内部的屏幕上的视图为75%时.所以findFirstVisibleItem和所有那些在这里不起作用.(或者,如果他们这样做,我不知道他们将如何工作).
目前我正在等待视图在我能够暂停或播放视频之前被回收,但是从生成新视图的那一刻开始.任何人都可以帮助我,我已经研究了很长时间,并没有在哪里.
使用 RecyclerView.ItemDecoration。
ItemDecoration 在渲染回收器的内容时被多次调用,因此它不应该在这里做繁重的事情,但您可以使用它来通知视图的某些百分比何时可见。
ItemDecoration 有多种方法,但您需要实现的方法是:
public void onDrawOver(Canvas c, RecyclerView parent, State state);
Run Code Online (Sandbox Code Playgroud)
或者可能
public void onDraw(Canvas c, RecyclerView parent, State state);
Run Code Online (Sandbox Code Playgroud)
对于您所要求的情况,您不会注意到任何区别,但为了补充解释,当您的行在屏幕上呈现时调用第一个,以便您可以在它上进行绘制,而第二个在呈现行之前调用所以你可以在“下面”画一些东西。
对于这种情况,您不需要绘制任何内容,只需计算视图的大小即可。对于该任务,您需要获取渲染视图,并检测哪一个是带有视频的视图。
@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%
// }
// }
}
}
Run Code Online (Sandbox Code Playgroud)
您需要首先将 ItemDecoration 注册到 recyclerView 中。
recyclerView.addItemDecoration(theItemDecoration);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1195 次 |
| 最近记录: |