1.首先:

设置ViewPager的verticalViewPager.setOffscreenPageLimit(0),发现无效,但是源码中确实设置0之后默认的是0,然而你滑动的时候发现当前的视频在播放而下一条也会播放。

2.解决 :

public abstract class LazyLoadFragment extends Fragment {    @Bind(R.id.img_detail_image)    TouchImagView imgDetailImage;    @Bind(R.id.voice)    ImageView voice;    @Bind(R.id.pause)    ImageView pause;    @Bind(R.id.img_detail_video)    CustomVideoView imgDetailVideo;    /**     * 视图是否已经初初始化     */    protected boolean isInit = false;    protected boolean isLoad = false;    protected final String TAG = "LazyLoadFragment";    private View view;    private HttpProxyCacheServer proxy;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        view = inflater.inflate(setContentView(), container, false);        GuiceHelper.bind(this,view);        isInit = true;        /**初始化的时候去加载数据**/        isCanLoadData();        return view;    }    /**     * 视图是否已经对用户可见,系统的方法     */    @Override    public void setUserVisibleHint(boolean isVisibleToUser) {        super.setUserVisibleHint(isVisibleToUser);        isCanLoadData();    }    /**     * 是否可以加载数据     * 可以加载数据的条件:     * 1.视图已经初始化     * 2.视图对用户可见     */    private void isCanLoadData() {        if (!isInit) {            return;        }        if (getUserVisibleHint()) {            lazyLoad();            isLoad = true;        } else {            if (isLoad) {                stopLoad();            }        }    }    /**     * 视图销毁的时候讲Fragment是否初始化的状态变为false     */    @Override    public void onDestroyView() {        super.onDestroyView();        isInit = false;        isLoad = false;    }    protected void showToast(String message) {        if (!TextUtils.isEmpty(message)) {            Toast.makeText(getContext(), message, Toast.LENGTH_SHORT).show();        }    }    /**     * 设置Fragment要显示的布局     *     * @return 布局的layoutId     */    protected abstract int setContentView();    /**     * 获取设置的布局     *     * @return     */    protected View getContentView() {        return view;    }    /**     * 找出对应的控件     *     * @param id     * @param      * @return     */    protected  T findViewById(int id) {        return (T) getContentView().findViewById(id);    }    /**     * 当视图初始化并且对用户可见的时候去真正的加载数据     */    protected abstract void lazyLoad();    /**     * 当视图已经对用户不可见并且加载过数据,如果需要在切换到其他页面时停止加载数据,可以覆写此方法     */    protected void stopLoad() {    }}

在fragment中:

public class FeedImageFragment extends LazyLoadFragment {    @Override    protected int setContentView() {        proxy = App.getProxy(getActivity());        String feedDetailJson = getArguments().getString(ARG_SECTION_NUMBER);        feedItem = Util.parseObject(feedDetailJson, FeedItem.class);        return R.layout.fragment_feed_image;    }   //初始化当前页面想执行的    @Override    protected void lazyLoad() {        initView();    }   //实现当前界面不想看到的    @Override    protected void stopLoad() {            imgDetailVideo.stopPlayback();            imgDetailVideo.destroyDrawingCache();    }

}

结果:

完美解决!

参考:https://blog.csdn.net/linglongxin24/article/details/53205878#commentBox

 

更多相关文章

  1. 2018-06-15 Android加载GIF图片的两种方式
  2. android 动画 ——视图动画(View Animation)
  3. Android情景分析之深入解析system_server
  4. android程序入口
  5. Android读取资源文件夹里的string-array字符串数组
  6. Android(安卓)用HorizontalScrollView实现ListView的Item滑动删
  7. 浅谈android add_service PERMISSION DENIED问题
  8. Android异步加载
  9. android 图片加载

随机推荐

  1. android studio软件下载地址
  2. Android自动化测试之MonkeyRunner-startA
  3. Ubuntu10.04 64(32)位 android开发环境建
  4. Android中各种Span的用法
  5. Android:如何设计一个完全不可见的Activi
  6. 代码设置android:icon,android:label
  7. Android(安卓)浏览网页
  8. android屏幕截图
  9. android sdk命令行操作笔记
  10. Android的NDK开发(1)————Android(安