RecommendFragmentPresenter.java 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693
  1. package com.edufound.reader.presenter;
  2. import static cn.jzvd.Jzvd.STATE_PLAYING;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.graphics.Outline;
  6. import android.os.Bundle;
  7. import android.os.Handler;
  8. import android.os.Message;
  9. import android.text.TextUtils;
  10. import android.view.View;
  11. import android.view.ViewOutlineProvider;
  12. import android.widget.LinearLayout;
  13. import android.widget.Switch;
  14. import androidx.annotation.NonNull;
  15. import androidx.recyclerview.widget.LinearLayoutManager;
  16. import androidx.recyclerview.widget.OrientationHelper;
  17. import androidx.recyclerview.widget.RecyclerView;
  18. import com.edufound.reader.R;
  19. import com.edufound.reader.activity.SmallFullVideoActivity;
  20. import com.edufound.reader.adapter.SlideVideoAdapter;
  21. import com.edufound.reader.apiserver.UserApiServerImpl;
  22. import com.edufound.reader.base.BaseActivity;
  23. import com.edufound.reader.base.BasePresenter;
  24. import com.edufound.reader.bean.ChannelCodeEnum;
  25. import com.edufound.reader.bean.FavoritesBean;
  26. import com.edufound.reader.bean.HttpResultBean;
  27. import com.edufound.reader.bean.HttpResultDataListBean;
  28. import com.edufound.reader.bean.ThroughType;
  29. import com.edufound.reader.bean.UserRecordBean;
  30. import com.edufound.reader.contract.RecommendFragmentContract;
  31. import com.edufound.reader.cusview.CusToast;
  32. import com.edufound.reader.cusview.RvListJzvdStd;
  33. import com.edufound.reader.model.RecommendFragmentModel;
  34. import com.edufound.reader.receiver.BackPageReceiver;
  35. import com.edufound.reader.util.Consts;
  36. import com.edufound.reader.util.EfunboxUtil;
  37. import com.edufound.reader.util.MMKVEncodeKey;
  38. import com.edufound.reader.util.MMKVUtil;
  39. import com.edufound.reader.util.SizeUtils;
  40. import com.edufound.reader.util.ThroughUtil;
  41. import com.edufound.reader.videoutil.OnViewPagerListener;
  42. import com.edufound.reader.videoutil.ViewPagerLayoutManager;
  43. import com.google.gson.Gson;
  44. import com.google.gson.reflect.TypeToken;
  45. import com.okhttplib.HttpInfo;
  46. import com.okhttplib.callback.Callback;
  47. import com.orhanobut.logger.Logger;
  48. import java.io.IOException;
  49. import java.util.ArrayList;
  50. import java.util.HashMap;
  51. import java.util.List;
  52. import java.util.Map;
  53. import cn.jzvd.Jzvd;
  54. public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentContract.View> implements RecommendFragmentContract.Presenter {
  55. Context mContext;
  56. RecommendFragmentModel mModel;
  57. private ViewPagerLayoutManager mViewPagerLayoutManager;
  58. private int mCurrentPosition = 0;
  59. List<UserRecordBean> mDataList;
  60. SlideVideoAdapter mAdapter;
  61. int loadType = 0;
  62. int mTotalSize = 20;
  63. int mPageIndex = 1;
  64. boolean loadOver = false;
  65. UserApiServerImpl mUserApi;
  66. Switch onPlayingSwitch;
  67. LinearLayout onPlayingMarqueen;
  68. boolean isFragmentPause = false;
  69. public RecommendFragmentPresenter(Context context) {
  70. mModel = new RecommendFragmentModel();
  71. mUserApi = new UserApiServerImpl();
  72. mContext = context;
  73. if (mDataList == null) {
  74. mDataList = new ArrayList<>();
  75. }
  76. }
  77. public UserApiServerImpl getUserApi() {
  78. return mUserApi;
  79. }
  80. @Override
  81. public void initVideoList(RecyclerView rv, int type, int startPosition) {
  82. rv.setOutlineProvider(new ViewOutlineProvider() {
  83. @Override
  84. public void getOutline(View view, Outline outline) {
  85. outline.setRoundRect(SizeUtils.dp2px(mContext, 5),
  86. 0,
  87. view.getWidth() - SizeUtils.dp2px(mContext, 5),
  88. view.getHeight(),
  89. SizeUtils.dp2px(mContext, 40));
  90. }
  91. });
  92. rv.setClipToOutline(true);
  93. loadType = type;
  94. if (type == 0) {
  95. //推荐的接口
  96. initVideoDate(rv, startPosition);
  97. mView.getRootView().post(new Runnable() {
  98. @Override
  99. public void run() {
  100. getRecommendDataList();
  101. }
  102. });
  103. } else if (type == 1) {
  104. Logger.e("获取关注");
  105. //关注的所有人的所有视频
  106. initVideoDate(rv, startPosition);
  107. mView.getRootView().post(new Runnable() {
  108. @Override
  109. public void run() {
  110. getMyFollowAllVideo();
  111. }
  112. });
  113. } else if (type == 2) {
  114. //上级页面传的json
  115. mDataList = ((BaseActivity) mView.getActivity()).getGson().fromJson(mView.getDataJson(), new TypeToken<List<UserRecordBean>>() {
  116. }.getType());
  117. if (mDataList != null) {
  118. initVideoDate(rv, startPosition);
  119. mTotalSize = mDataList.size();
  120. mView.getRootView().setVisibility(View.VISIBLE);
  121. mView.showFirstIntoView();
  122. mView.getRootView().post(new Runnable() {
  123. @Override
  124. public void run() {
  125. if (mAdapter != null) {
  126. mAdapter.notifyDataSetChanged();
  127. }
  128. }
  129. });
  130. }
  131. }
  132. }
  133. public void initVideoDate(RecyclerView rv, int startPosition) {
  134. rv.setLayoutManager(new LinearLayoutManager(mView.getActivity()));
  135. rv.setNestedScrollingEnabled(false);
  136. mViewPagerLayoutManager = new ViewPagerLayoutManager(mView.getActivity(), OrientationHelper.VERTICAL);
  137. rv.setLayoutManager(mViewPagerLayoutManager);
  138. mAdapter = new SlideVideoAdapter(mView.getActivity(), mDataList);
  139. rv.setAdapter(mAdapter);
  140. mViewPagerLayoutManager.setOnViewPagerListener(new OnViewPagerListener() {
  141. @Override
  142. public void onInitComplete() {
  143. //自动播放第一条
  144. autoPlayVideo(rv);
  145. // fragmentResume(rv);
  146. }
  147. @Override
  148. public void onPageRelease(boolean isNext, int position) {
  149. if (mCurrentPosition == position) {
  150. Jzvd.releaseAllVideos();
  151. }
  152. checkIsVip();
  153. }
  154. @Override
  155. public void onPageSelected(int position, boolean isBottom) {
  156. // if (mCurrentPosition == position) {
  157. // Logger.e("mCurrentPosition == position..return了");
  158. // return;
  159. // }
  160. ((BaseActivity) mView.getActivity()).removeFirstTipView();
  161. mCurrentPosition = position;
  162. autoPlayVideo(rv);
  163. if (mCurrentPosition == 0) {
  164. // Toast.makeText(mContext, "到顶了", Toast.LENGTH_SHORT).show();
  165. } else if (mCurrentPosition == (mTotalSize - 1)) {
  166. // Toast.makeText(mContext, "到底了", Toast.LENGTH_SHORT).show();
  167. }
  168. // if (mAdapter.getItemTag(mCurrentPosition).equals("ACTIVITY")) {
  169. // mView.eventHideUi();
  170. // } else {
  171. // mView.showAllUi();
  172. // }
  173. // Logger.e("mCurrentPosition:" + mCurrentPosition);
  174. // Logger.e("mDataList:" + mDataList.size());
  175. scrollToNextFunction(rv, false);
  176. }
  177. @Override
  178. public void onChildViewDetachedFromWindow(View view) {
  179. Jzvd jzvd = view.findViewById(R.id.slidevideo_video);
  180. if (jzvd != null && Jzvd.CURRENT_JZVD != null && jzvd.jzDataSource != null &&
  181. jzvd.jzDataSource.containsTheUrl(Jzvd.CURRENT_JZVD.jzDataSource.getCurrentUrl())) {
  182. if (Jzvd.CURRENT_JZVD != null && Jzvd.CURRENT_JZVD.screen != Jzvd.SCREEN_FULLSCREEN) {
  183. Jzvd.releaseAllVideos();
  184. }
  185. }
  186. }
  187. });
  188. if (startPosition > 0) {
  189. rv.scrollToPosition(startPosition);
  190. mCurrentPosition = startPosition;
  191. }
  192. }
  193. @Override
  194. public int getCurPlayVideoIndex() {
  195. return mCurrentPosition;
  196. }
  197. @Override
  198. public Object getCurVideoExampleId() {
  199. if (mDataList != null && mDataList.size() > 0) {
  200. return mDataList.get(mCurrentPosition).getUserRead().getExampleId();
  201. }
  202. return -1;
  203. }
  204. @Override
  205. public void fragmentPause(RecyclerView rv) {
  206. // Jzvd.releaseAllVideos();
  207. isFragmentPause = true;
  208. handler.sendEmptyMessageDelayed(0x3311, 100);
  209. // JzvdStd.goOnPlayOnPause();
  210. }
  211. @Override
  212. public void fragmentResume(RecyclerView rv) {
  213. isFragmentPause = false;
  214. checkIsVip();
  215. handler.sendEmptyMessageDelayed(0x3312, 500);
  216. }
  217. public void checkIsVip() {
  218. if (Consts.getUMengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
  219. if (Consts.getmConstsBaiDuUserBean() != null) {
  220. mView.getisViewUI().setVisibility(View.INVISIBLE);
  221. }
  222. } else {
  223. //除了百度都走这里
  224. if (mView == null) {
  225. return;
  226. }
  227. mView.getisViewUI().setEnabled(false);
  228. mView.getisViewUI().postDelayed(new Runnable() {
  229. @Override
  230. public void run() {
  231. if (Consts.isIsYFVip()) {
  232. if (mView != null) {
  233. if (mView.getisViewUI() != null) {
  234. mView.getisViewUI().setVisibility(View.INVISIBLE);
  235. }
  236. }
  237. }
  238. if (mView != null) {
  239. if (mView.getisViewUI() != null) {
  240. mView.getisViewUI().setEnabled(true);
  241. }
  242. }
  243. }
  244. }, 500);
  245. }
  246. }
  247. @Override
  248. public void getRecommendDataList() {
  249. if (mDataList != null && mDataList.size() >= mTotalSize) {
  250. loadOver = true;
  251. return;
  252. }
  253. String grade = MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE);
  254. if (TextUtils.isEmpty(grade) || Consts.getmConstsUserBean() == null) {
  255. grade = EfunboxUtil.getEnumByCNGrade("一年级");
  256. } else {
  257. grade = Consts.getmConstsUserBean().getGrade();
  258. }
  259. mModel.getRecommendList(mView.getActivity(), grade, mPageIndex, new Callback() {
  260. @Override
  261. public void onSuccess(HttpInfo info) throws IOException {
  262. HttpResultBean<HttpResultDataListBean<UserRecordBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<HttpResultDataListBean<UserRecordBean>>>() {
  263. }.getType());
  264. if (ThroughUtil.mThroughTypeBean != null && ThroughUtil.mThroughTypeBean.getmThroughType().equals(ThroughType.TYPEB.getTypeCode())) {
  265. //要根据ID获取视频并且放到第一个
  266. for (int i = 0; i < bean.getData().getList().size(); i++) {
  267. if (bean.getData().getList().get(i).getUserRead().getId().equals(ThroughUtil.mThroughTypeBean.getUserReadId())) {
  268. //找到了。要放到第一个
  269. Logger.e("找到了推荐视频。要放到第一个");
  270. UserRecordBean upbbean = bean.getData().getList().get(i);
  271. bean.getData().getList().remove(i);
  272. bean.getData().getList().add(0, upbbean);
  273. }
  274. }
  275. }
  276. mAdapter.addMored(bean.getData().getList());
  277. mTotalSize = Integer.valueOf(bean.getData().getTotalSize());
  278. mView.getRootView().post(new Runnable() {
  279. @Override
  280. public void run() {
  281. mAdapter.notifyDataSetChanged();
  282. mPageIndex++;
  283. mView.getRootView().setVisibility(View.VISIBLE);
  284. mView.showFirstIntoView();
  285. }
  286. });
  287. }
  288. @Override
  289. public void onFailure(HttpInfo info) throws IOException {
  290. Logger.e("info:" + info.getRetDetail());
  291. Logger.e("info-getRetCode:" + info.getRetCode());
  292. //getRetCode==6
  293. getRecommendDataList();
  294. // CusToast.getInstance(mView.getActivity()).show(info.getRetDetail(), 3000);
  295. // Toast.makeText(mView.getActivity(), info.getRetDetail(), Toast.LENGTH_SHORT).show();
  296. }
  297. });
  298. }
  299. @Override
  300. public void doFavorites(UserRecordBean.UserRead userRead) {
  301. Map<String, String> map = new HashMap<>();
  302. map.put("targetCode", userRead.getId());
  303. String json = ((BaseActivity) mView.getActivity()).getGson().toJson(map);
  304. mModel.doFavorites(mView.getActivity(), json, new Callback() {
  305. @Override
  306. public void onSuccess(HttpInfo info) throws IOException {
  307. HttpResultBean<FavoritesBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<FavoritesBean>>() {
  308. }.getType());
  309. Logger.e("bean.getData().getStatus():" + bean.getData().getStatus());
  310. Intent intent = new Intent();
  311. if (bean.getData().getStatus().equals("DEL")) {
  312. mDataList.get(mCurrentPosition).setFavorites(false);
  313. mDataList.get(mCurrentPosition).setFavoritesBean(null);
  314. mView.setFavorites(false);
  315. intent.setAction(BackPageReceiver.BACK_HOME_REMOVE_VIDEO_ITEM);
  316. } else if (bean.getData().getStatus().equals("NORMAL")) {
  317. mDataList.get(mCurrentPosition).setFavorites(true);
  318. mDataList.get(mCurrentPosition).setFavoritesBean(null);
  319. mView.setFavorites(true);
  320. intent.setAction(BackPageReceiver.BACK_HOME_ADD_VIDEO_ITEM);
  321. }
  322. if (mView.getChangeCharacterListener() != null) {
  323. mView.getChangeCharacterListener().changeDataList(mDataList.get(mCurrentPosition));
  324. }
  325. intent.putExtra("position", String.valueOf(mCurrentPosition));
  326. mView.getActivity().sendBroadcast(intent);
  327. }
  328. @Override
  329. public void onFailure(HttpInfo info) throws IOException {
  330. Logger.e("收藏/取消收藏接口失败:" + info.getRetDetail());
  331. }
  332. });
  333. }
  334. @Override
  335. public void doLike(UserRecordBean.UserRead userRead) {
  336. mModel.doLick(mView.getActivity(), userRead.getId(), new Callback() {
  337. @Override
  338. public void onSuccess(HttpInfo info) throws IOException {
  339. HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
  340. }.getType());
  341. if (!TextUtils.isEmpty(bean.getData())) {
  342. mView.setLikes(bean.getData());
  343. mDataList.get(mCurrentPosition).setLike(true);
  344. mDataList.get(mCurrentPosition).getUserRead().setLikeAmount(bean.getData());
  345. mView.getChangeCharacterListener().changeDataList(mDataList.get(mCurrentPosition));
  346. }
  347. }
  348. @Override
  349. public void onFailure(HttpInfo info) throws IOException {
  350. Logger.e("failure---info.getRetDetail:" + info.getRetDetail());
  351. }
  352. });
  353. }
  354. @Override
  355. public void activityDestory() {
  356. mView.clearRecyclerView();
  357. mDataList = null;
  358. mAdapter = null;
  359. if (handler != null) {
  360. handler.removeMessages(0x3311);
  361. handler.removeMessages(0x3312);
  362. handler = null;
  363. }
  364. Jzvd.releaseAllVideos();
  365. Jzvd.backPress();
  366. }
  367. @Override
  368. public void getRecordInfoById(String id) {
  369. if (mView == null) {
  370. return;
  371. }
  372. mModel.getRecordInfoById(mView.getActivity(), id, new Callback() {
  373. @Override
  374. public void onSuccess(HttpInfo info) throws IOException {
  375. Logger.e("获取单独的成功了");
  376. HttpResultBean<UserRecordBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserRecordBean>>() {
  377. }.getType());
  378. mDataList.set(mCurrentPosition, bean.getData());
  379. mView.getRootView().post(new Runnable() {
  380. @Override
  381. public void run() {
  382. mAdapter.notifyDataSetChanged();
  383. }
  384. });
  385. }
  386. @Override
  387. public void onFailure(HttpInfo info) throws IOException {
  388. Logger.e("获取单独的失敗了:" + info.getRetDetail());
  389. }
  390. });
  391. }
  392. @Override
  393. public void getMyFollowAllVideo() {
  394. if (mDataList != null && mDataList.size() >= mTotalSize) {
  395. loadOver = true;
  396. // Toast.makeText(mContext, "没有更多了", Toast.LENGTH_SHORT).show();
  397. return;
  398. }
  399. mModel.getMyFollowAllVideo(mView.getActivity(), mPageIndex, new Callback() {
  400. @Override
  401. public void onSuccess(HttpInfo info) throws IOException {
  402. HttpResultBean<HttpResultDataListBean<UserRecordBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<HttpResultDataListBean<UserRecordBean>>>() {
  403. }.getType());
  404. mAdapter.addMored(bean.getData().getList());
  405. // mDataList.addAll(bean.getData().getList());
  406. mTotalSize = Integer.valueOf(bean.getData().getTotalSize());
  407. mView.getRootView().post(new Runnable() {
  408. @Override
  409. public void run() {
  410. mAdapter.notifyDataSetChanged();
  411. mPageIndex++;
  412. mView.getRootView().setVisibility(View.VISIBLE);
  413. mView.showFirstIntoView();
  414. }
  415. });
  416. }
  417. @Override
  418. public void onFailure(HttpInfo info) throws IOException {
  419. }
  420. });
  421. }
  422. @Override
  423. public void getListByExampleId(String exampleId) {
  424. mModel.getListByExampleId(mView.getActivity(), exampleId, new Callback() {
  425. @Override
  426. public void onSuccess(HttpInfo info) throws IOException {
  427. HttpResultBean<HttpResultDataListBean<UserRecordBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<HttpResultDataListBean<UserRecordBean>>>() {
  428. }.getType());
  429. Bundle bundle = new Bundle();
  430. bundle.putString("index", 0 + "");
  431. bundle.putString("dataJson", new Gson().toJson(bean.getData().getList()));
  432. //数据太多了。直接传不过去,通过MMKV写一下再读一下
  433. Intent intent = new Intent(mContext, SmallFullVideoActivity.class);
  434. intent.putExtra("params_bundle", bundle);
  435. mContext.startActivity(intent);
  436. }
  437. @Override
  438. public void onFailure(HttpInfo info) throws IOException {
  439. }
  440. });
  441. }
  442. @Override
  443. public Switch getPlayingSwitch() {
  444. if (onPlayingSwitch != null) {
  445. return onPlayingSwitch;
  446. }
  447. return null;
  448. }
  449. @Override
  450. public LinearLayout getPlayingMarqueen() {
  451. return onPlayingMarqueen;
  452. }
  453. @Override
  454. public void clearAll() {
  455. mViewPagerLayoutManager = null;
  456. mDataList = null;
  457. mAdapter = null;
  458. Jzvd.releaseAllVideos();
  459. }
  460. private void autoPlayVideo(RecyclerView rv) {
  461. if (rv == null || rv.getChildAt(0) == null) {
  462. return;
  463. }
  464. if (mAdapter.getItemTag(mCurrentPosition).equals("ACTIVITY")) {
  465. mView.eventHideUi();
  466. } else {
  467. mView.showAllUi();
  468. }
  469. //获取当前显示的View 的数据
  470. int childCount = rv.getChildCount();
  471. //获取最后一具 Item 对应的View
  472. View childAt = rv.getChildAt(childCount - 1);
  473. //获取当前军舰中显示的最后一个 Item 的位置 Postion
  474. int childLayoutPosition = rv.getChildLayoutPosition(childAt);
  475. mView.setTopStatus(mDataList.get(childLayoutPosition));
  476. RvListJzvdStd player = rv.getChildAt(0).findViewById(R.id.slidevideo_video);
  477. onPlayingSwitch = rv.getChildAt(0).findViewById(R.id.slidevideo_video_switch);
  478. onPlayingMarqueen = rv.getChildAt(0).findViewById(R.id.slidevideo_video_marqueen);
  479. if (player != null) {
  480. if (player.state == STATE_PLAYING) {
  481. //正在播放
  482. } else {
  483. player.startVideoAfterPreloading();
  484. player.setVideoCallBack(new RvListJzvdStd.VideoCallBack() {
  485. @Override
  486. public void onComplete() {
  487. // Runtime.getRuntime().gc();
  488. System.gc();
  489. if (mCurrentPosition >= mTotalSize - 1) {
  490. //Toast.makeText(mView.getActivity(), "全部播放完成", Toast.LENGTH_SHORT).show();
  491. CusToast.getInstance(mView.getActivity()).show("全部播放完成", 2000);
  492. // mView.getActivity().finish();
  493. return;
  494. }
  495. scrollToNextFunction(rv, true);
  496. }
  497. @Override
  498. public void onError(int what, int extra) {
  499. }
  500. @Override
  501. public void onInfo(int what, int extra) {
  502. }
  503. @Override
  504. public void onPrepared() {
  505. handler.sendEmptyMessageDelayed(0x3311, 100);
  506. }
  507. });
  508. }
  509. }
  510. }
  511. public void checkIsOver() {
  512. if (mCurrentPosition >= mDataList.size() - 1) {
  513. // Toast.makeText(mContext, "到底了", Toast.LENGTH_SHORT).show();
  514. }
  515. }
  516. public void scrollToNextFunction(RecyclerView rv, boolean needScroll) {
  517. //获取当前显示的View 的数据
  518. int childCount = rv.getChildCount();
  519. //获取最后一具 Item 对应的View
  520. View childAt = rv.getChildAt(childCount - 1);
  521. //获取当前军舰中显示的最后一个 Item 的位置 Postion
  522. int childLayoutPosition = rv.getChildLayoutPosition(childAt);
  523. //如果不是最后一个就向下滑动
  524. if (childLayoutPosition < rv.getAdapter().getItemCount() - 1) {
  525. if (needScroll) {
  526. rv.smoothScrollToPosition(childLayoutPosition + 1);
  527. }
  528. } else {
  529. // Toast.makeText(this, "已滑动到底部了", Toast.LENGTH_LONG).show();
  530. // CToast.makeText(mView.getActivity(), "滑动到最后一个啦", 3000).show();
  531. if (loadOver) {
  532. return;
  533. }
  534. switch (loadType) {
  535. case 0:
  536. getRecommendDataList();
  537. break;
  538. case 1:
  539. getMyFollowAllVideo();
  540. break;
  541. case 2:
  542. break;
  543. }
  544. }
  545. }
  546. public void scrollToUpFunction(RecyclerView rv) {
  547. //获取当前显示的View 的数据
  548. if (mCurrentPosition > 0) {
  549. rv.smoothScrollToPosition(mCurrentPosition - 1);
  550. mCurrentPosition = mCurrentPosition - 1;
  551. } else if (mCurrentPosition == 0) {
  552. // Toast.makeText(mContext, "到顶了", Toast.LENGTH_SHORT).show();
  553. // CusToast.getInstance(mContext).show("已经是第一个了", 2000);
  554. }
  555. }
  556. Handler handler = new Handler(new Handler.Callback() {
  557. @Override
  558. public boolean handleMessage(@NonNull Message msg) {
  559. switch (msg.what) {
  560. case 0x3311:
  561. handler.removeMessages(0x3311);
  562. if (isFragmentPause) {
  563. if (mView != null && mView.getmRecyclerView() != null) {
  564. if (mView.getmRecyclerView().getChildCount() > 0) {
  565. RvListJzvdStd player = mView.getmRecyclerView().getChildAt(0).findViewById(R.id.slidevideo_video);
  566. if (player == null) {
  567. Logger.e("竟然是空的");
  568. return true;
  569. }
  570. if (isFragmentPause) {
  571. player.reset();
  572. Jzvd.releaseAllVideos();
  573. }
  574. // Jzvd.goOnPlayOnPause();
  575. }
  576. }
  577. }
  578. break;
  579. case 0x3312:
  580. handler.removeMessages(0x3312);
  581. if (mView != null && mView.getmRecyclerView() != null) {
  582. if (mView.getmRecyclerView().getChildCount() > 0) {
  583. RvListJzvdStd player = mView.getmRecyclerView().getChildAt(0).findViewById(R.id.slidevideo_video);
  584. if (player == null) {
  585. Logger.e("竟然是空的");
  586. return true;
  587. }
  588. player.startButton.postDelayed(new Runnable() {
  589. @Override
  590. public void run() {
  591. if (player.state == STATE_PLAYING) {
  592. } else {
  593. player.startButton.performClick();
  594. }
  595. }
  596. }, 300);
  597. }
  598. // player.startVideoAfterPreloading();
  599. // player.onPrepared();
  600. // Jzvd.goOnPlayOnResume();
  601. break;
  602. }
  603. }
  604. return true;
  605. }
  606. });
  607. }