在 ViewPager 中带有视频的 WebView 即使在水平滚动后也会继续播放音频
WebView with Video In a ViewPager keeps playing audio even after scrolling horizontally
我有一个 Activity
,其中 ViewPager
包含一个 WebView
,其中 Text
和 Video
。当我播放视频并按下后退时,音频仍在播放。然后我做了
@Override
public void onPause() {
super.onPause();
if(webView != null) {
webView.onPause();
}
}
@Override
public void onResume() {
super.onResume();
if (webView != null) {
webView.onResume();
}
}
但是当我在 ViewPager
中滑动到下一个时,新的 url
正在加载到 WebView
中,但音频仍在播放上一个 WebView
中的音频。有谁知道这个问题的解决方案吗?
编辑:
解决方案
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (webView != null) {
if (isVisibleToUser) {
webView.reload();
} else {
webView.onPause();
}
}
}
你一定要试试
webView.destroy();
方法可能有效。
片段的 onPause() 未被调用,因为片段未在视图中获得 destroyed/paused(除非它超出屏幕外限制)pager.So 您必须检查片段是否可见与否。
您可以这样做:
public class MyFragment extends Fragment {
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
//visible to user }
else {
//not visible
}
}
}
然后用你的 webview 执行你想要的任何操作。
将 onPageChangeListener 添加到您的 viewpager。
/* in onViewCreated */
ViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//here get the webview of the previous page and do on pause.
if (webview of prev page position is active)
webview of perv position.onPause();
//resume the webView if it was previously paused
if (webView was previously paused )
webView of position.onResume();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
您必须填写算法。
希望这有帮助
我有一个 Activity
,其中 ViewPager
包含一个 WebView
,其中 Text
和 Video
。当我播放视频并按下后退时,音频仍在播放。然后我做了
@Override
public void onPause() {
super.onPause();
if(webView != null) {
webView.onPause();
}
}
@Override
public void onResume() {
super.onResume();
if (webView != null) {
webView.onResume();
}
}
但是当我在 ViewPager
中滑动到下一个时,新的 url
正在加载到 WebView
中,但音频仍在播放上一个 WebView
中的音频。有谁知道这个问题的解决方案吗?
编辑:
解决方案
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (webView != null) {
if (isVisibleToUser) {
webView.reload();
} else {
webView.onPause();
}
}
}
你一定要试试
webView.destroy();
方法可能有效。
片段的 onPause() 未被调用,因为片段未在视图中获得 destroyed/paused(除非它超出屏幕外限制)pager.So 您必须检查片段是否可见与否。
您可以这样做:
public class MyFragment extends Fragment {
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
//visible to user }
else {
//not visible
}
}
}
然后用你的 webview 执行你想要的任何操作。
将 onPageChangeListener 添加到您的 viewpager。
/* in onViewCreated */
ViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//here get the webview of the previous page and do on pause.
if (webview of prev page position is active)
webview of perv position.onPause();
//resume the webView if it was previously paused
if (webView was previously paused )
webView of position.onResume();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
您必须填写算法。 希望这有帮助