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 implements CharacterFragmentContract.Presenter { Context mContext; CharacterFragmentModel mModel; UserApiServerImpl mUserApi; List mDataList; int mListStart = 0; int mListEnd = 6; List> 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> bean = info.getRetDetail(new TypeToken>>() { }.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 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 bean = info.getRetDetail(new TypeToken>() { // }.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 bean = info.getRetDetail(new TypeToken>() { }.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 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 data; int index; int i; View view; }