123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- package com.edufound.reader.presenter;
- import android.content.Context;
- import android.graphics.Color;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.FrameLayout;
- import android.widget.GridLayout;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import androidx.fragment.app.FragmentManager;
- import androidx.fragment.app.FragmentTransaction;
- import com.edufound.reader.R;
- import com.edufound.reader.activity.SmallFullVideoActivity;
- import com.edufound.reader.apiserver.UserApiServerImpl;
- import com.edufound.reader.base.BaseActivity;
- import com.edufound.reader.base.BasePresenter;
- import com.edufound.reader.bean.HttpResultBean;
- import com.edufound.reader.bean.HttpResultDataListBean;
- import com.edufound.reader.bean.UserRecordBean;
- import com.edufound.reader.contract.CharacterFragmentContract;
- import com.edufound.reader.cusview.CusToast;
- import com.edufound.reader.fragment.RecommendFragment;
- import com.edufound.reader.model.CharacterFragmentModel;
- import com.edufound.reader.util.EfunboxUtil;
- import com.edufound.reader.util.GlideUtils;
- import com.edufound.reader.util.MMKVUtil;
- import com.edufound.reader.util.SizeUtils;
- import com.google.common.collect.Lists;
- import com.google.gson.Gson;
- import com.google.gson.reflect.TypeToken;
- import com.okhttplib.HttpInfo;
- import com.okhttplib.callback.Callback;
- import com.orhanobut.logger.Logger;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import cn.jzvd.Jzvd;
- public class CharacterFragmentPresenterVersionThree extends BasePresenter<CharacterFragmentContract.View> implements CharacterFragmentContract.Presenter {
- Context mContext;
- CharacterFragmentModel mModel;
- UserApiServerImpl mUserApi;
- List<UserRecordBean> mDataList;
- int mListStart = 0;
- int mListEnd = 6;
- List<List<UserRecordBean>> mLoadDataList;
- RecommendFragment mRecommendFragment;
- FragmentManager mFragmentManager;
- public CharacterFragmentPresenterVersionThree(Context context, FragmentManager fragmentManager) {
- mModel = new CharacterFragmentModel();
- mUserApi = new UserApiServerImpl();
- mContext = context;
- mFragmentManager = fragmentManager;
- // mDataList = new ArrayList<>();
- // for (int i = 0; i < 100; i++) {
- // mDataList.add("i=" + i);
- // }
- }
- public UserApiServerImpl getUserApi() {
- return mUserApi;
- }
- @Override
- public void initGridLayout(GridLayout gridLayout) {
- }
- @Override
- public void initLinearLayout(LinearLayout linearLayout) {
- if (mLoadDataList == null || mLoadDataList.size() <= 0) {
- return;
- }
- int timeCount = 0;
- for (int j = mListStart; j < mListEnd; j++) {
- timeCount++;
- Message message = new Message();
- message.obj = linearLayout;
- message.what = CharacterFragmentModel.LOAD_LINEARLAYOUT;
- message.arg1 = j;
- if (timeCount == (mListEnd - mListStart)) {
- mCharacterHandler.sendEmptyMessageDelayed(CharacterFragmentModel.LOAD_LINEARLAYOUT_OVER, 1000);
- }
- mCharacterHandler.sendMessageDelayed(message, 50 * timeCount);
- }
- mListStart = mListEnd;
- if (mListEnd + 3 > mLoadDataList.size()) {
- mListEnd = mLoadDataList.size();
- } else {
- mListEnd = mListEnd + 3;
- }
- }
- @Override
- public void onDestory(GridLayout layout, LinearLayout linearLayout) {
- if (mCharacterHandler != null) {
- mCharacterHandler.removeMessages(CharacterFragmentModel.LOAD_GRID);
- mCharacterHandler = null;
- if (mRecommendFragment != null) {
- mFragmentManager.beginTransaction().remove(mRecommendFragment);
- mRecommendFragment = null;
- }
- Jzvd.releaseAllVideos();
- }
- if (layout != null) {
- layout.removeAllViews();
- layout = null;
- }
- if (linearLayout != null) {
- linearLayout.removeAllViews();
- linearLayout = null;
- }
- mView = null;
- }
- @Override
- public void getExampleAll() {
- mModel.getExampleAll(mView.getActivity(), new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- HttpResultBean<HttpResultDataListBean<UserRecordBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<HttpResultDataListBean<UserRecordBean>>>() {
- }.getType());
- mDataList = bean.getData().getList();
- mLoadDataList = Lists.partition(mDataList, 2);
- mView.getExampleAllSuccess();
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- Logger.e("获取任务失败:" + info.getRetDetail());
- getExampleAll();
- }
- });
- }
- @Override
- public void setVideoDanMuStatus(boolean bool) {
- if (mRecommendFragment != null) {
- mRecommendFragment.danMuStatus(bool);
- }
- }
- @Override
- public void setVideoMarqueenStatus(int status) {
- if (mRecommendFragment != null) {
- mRecommendFragment.playingMarqueenStatus(status);
- }
- }
- private void setLinearLayoutItem(LinearLayout linearLayout, int index) {
- //得改一下,变成2个一组
- if (mView == null) {
- return;
- }
- LinearLayout layout = new LinearLayout(mContext);
- layout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT));
- layout.setOrientation(LinearLayout.VERTICAL);
- //
- List<UserRecordBean> data = mLoadDataList.get(index);
- for (int i = 0; i < data.size(); i++) {
- View view = LayoutInflater.from(mContext).inflate(R.layout.adapter_item_record_authority, null);
- ImageView imgIcon = view.findViewById(R.id.adapter_item_record_authority_icon);
- TextView name = view.findViewById(R.id.adapter_item_record_authority_name);
- TextView allcount = view.findViewById(R.id.adapter_item_record_authority_allcount_num);
- TextView looknum = view.findViewById(R.id.adapter_item_record_authority_look_num);
- TextView thumbnum = view.findViewById(R.id.adapter_item_record_authority_thumb_num);
- TextView startnum = view.findViewById(R.id.adapter_item_record_authority_start_num);
- GlideUtils.loadImage(mContext, data.get(i).getUserRead().getCoverImg(), imgIcon);
- name.setText(data.get(i).getUserRead().getTitle());
- allcount.setText(EfunboxUtil.checkNum10000(data.get(i).getUserRead().getReadAmount()));
- looknum.setText(EfunboxUtil.checkNum10000(data.get(i).getUserRead().getPlayAmount()));
- thumbnum.setText(EfunboxUtil.checkNum10000(data.get(i).getUserRead().getLikeAmount()));
- startnum.setText(EfunboxUtil.checkNum10000(data.get(i).getUserRead().getFavoritesAmount()));
- int finalI = i;
- mView.addUiClick(view, o -> {
- // Bundle bundle = new Bundle();
- // bundle.putString("index", index + "");
- // bundle.putString("dataJson", "getmmkv");
- // bundle.putString("intoPage", "Character");
- // //数据太多了。直接传不过去,通过MMKV写一下再读一下
- // MMKVUtil.getInstance().encode("video_data", ((BaseActivity) mView.getActivity()).getGson().toJson(mDataList));
- // ((BaseActivity) mView.getActivity()).toNextActivity(SmallFullVideoActivity.class, bundle);
- // CusToast.getInstance(mContext).show(finalI + "", 3000);
- mCharacterHandler.removeMessages(0x33312);
- Message message = new Message();
- TestBean ttt = new TestBean();
- ttt.data = data;
- ttt.i = finalI;
- ttt.index = index;
- ttt.linearLayout = linearLayout;
- ttt.view = view;
- message.obj = ttt;
- message.what = 0x33312;
- mCharacterHandler.sendMessageDelayed(message, 100);
- });
- LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(new LinearLayout.LayoutParams(SizeUtils.dp2px(mContext, 415), SizeUtils.dp2px(mContext, 290)));
- params.setMargins(SizeUtils.dp2px(mContext, 10), 0, SizeUtils.dp2px(mContext, 20), SizeUtils.dp2px(mContext, 20));
- view.setLayoutParams(params);
- layout.addView(view);
- }
- linearLayout.addView(layout);
- }
- @Override
- public void getRecordInfoByIdSetCharacter3(String id) {
- // if (mView == null) {
- // return;
- // }
- // mModel.getRecordInfoById(mView.getActivity(), id, new Callback() {
- // @Override
- // public void onSuccess(HttpInfo info) throws IOException {
- // HttpResultBean<UserRecordBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserRecordBean>>() {
- // }.getType());
- // mRecommendFragment.getChangeCharacterListener().changeDataList(bean.getData());
- // }
- //
- // @Override
- // public void onFailure(HttpInfo info) throws IOException {
- // Logger.e("获取单独的失敗了:" + info.getRetDetail());
- // }
- // });
- }
- @Override
- public void onPause() {
- }
- Handler mCharacterHandler = new Handler(new Handler.Callback() {
- @Override
- public boolean handleMessage(Message msg) {
- switch (msg.what) {
- case CharacterFragmentModel.LOAD_LINEARLAYOUT:
- setLinearLayoutItem((LinearLayout) msg.obj, msg.arg1);
- break;
- case CharacterFragmentModel.LOAD_LINEARLAYOUT_OVER:
- break;
- case 0x33312:
- if (mRecommendFragment != null) {
- mFragmentManager.beginTransaction().remove(mRecommendFragment);
- mRecommendFragment = null;
- }
- TestBean ttt = (TestBean) msg.obj;
- String id = ttt.data.get(ttt.i).getUserRead().getId();
- if (mView != null) {
- mModel.getRecordInfoById(mView.getActivity(), id, new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- HttpResultBean<UserRecordBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserRecordBean>>() {
- }.getType());
- // mRecommendFragment.getChangeCharacterListener().changeDataList(bean.getData());
- mRecommendFragment = new RecommendFragment(2);
- FragmentTransaction transaction = mFragmentManager.beginTransaction();
- transaction.addToBackStack(null);
- transaction.replace(R.id.character_version_three_fragment_layout, mRecommendFragment);
- List<UserRecordBean> sss = new ArrayList<>();
- sss.add(bean.getData());
- mRecommendFragment.setDataJson(new Gson().toJson(sss));
- mRecommendFragment.hiddenBottomView();
- mRecommendFragment.showUserReadCount(true);
- mRecommendFragment.setLayoutViewScale(0.92f, 0.92f);
- mRecommendFragment.setChangeCharacterListener(new RecommendFragment.ChangeCharacterListener() {
- @Override
- public void changeDataList(UserRecordBean list) {
- mRecommendFragment.setTopStatus(list);
- }
- });
- transaction.commit();
- ttt.linearLayout.removeView(mView.getFragmentLayout());
- if (ttt.index - 1 < 0) {
- ttt.linearLayout.addView(mView.getFragmentLayout(), 0);
- } else {
- ttt.linearLayout.addView(mView.getFragmentLayout(), ttt.index);
- }
- mView.getFragmentLayout().setVisibility(View.VISIBLE);
- mView.getScrllView().postDelayed(new Runnable() {
- @Override
- public void run() {
- //- SizeUtils.dp2px(mContext, 100)
- if (mView != null) {
- if (mView.getScrllView() != null) {
- mView.getScrllView().smoothScrollTo(mView.getFragmentLayout().getLeft() + ttt.view.getWidth() - (ttt.view.getWidth() / 6), 0);
- }
- }
- }
- }, 200);
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- Logger.e("获取单独的失敗了:" + info.getRetDetail());
- CusToast.getInstance(mContext).show("获取数据失败", 3000);
- }
- });
- }
- break;
- default:
- throw new IllegalStateException("Unexpected value: " + msg.what);
- }
- return false;
- }
- });
- }
- class TestBean {
- LinearLayout linearLayout;
- List<UserRecordBean> data;
- int index;
- int i;
- View view;
- }
|