【发布时间】:2018-09-12 12:27:31
【问题描述】:
我正在编写一个具有视频 ListView 的应用程序,如果用户播放其中一个视频并滚动列表,以使特定视图不再在屏幕上可见,则必须暂停视频,并且应该暂停 MediaPlayer发布。
所以我的问题是,有什么方法可以知道视图在 ListView 中而不是在 ScrollView 中被滚动?
谢谢。
【问题讨论】:
我正在编写一个具有视频 ListView 的应用程序,如果用户播放其中一个视频并滚动列表,以使特定视图不再在屏幕上可见,则必须暂停视频,并且应该暂停 MediaPlayer发布。
所以我的问题是,有什么方法可以知道视图在 ListView 中而不是在 ScrollView 中被滚动?
谢谢。
【问题讨论】:
这对我有用:
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
//if the result is false so mediaPlayer must be released
if (videoCurrentPosition != -1 && !checkExistence(firstVisibleItem, visibleItemCount)) adapter.releaseMediaPlayer();
}
});
videoCurrentPosition 显示我点击的项目的位置。它由-1设置,因为适配器中的位置从0开始。
private Boolean checkExistence(int firstVisibleItem, int visibleItemCount) {
for (int i = firstVisibleItem; i <= (firstVisibleItem + visibleItemCount - 1); i++) {
// if it's true so our view is inside the list (on screen now)
if (videoCurrentPosition == i) return true;
}
// if it's false so our view is'nt inside the list (not screen now)
return false;
}
【讨论】: