package com.edufound.reader.fragment; import android.annotation.SuppressLint; import android.graphics.Rect; import android.os.Build; import android.view.View; import android.view.ViewGroup; import android.widget.GridLayout; import android.widget.HorizontalScrollView; import android.widget.ImageView; import android.widget.Space; import com.baidu.duer.bot.directive.payload.AmountInfo; import com.baidu.duer.botsdk.BotIntent; import com.edufound.reader.R; import com.edufound.reader.activity.SafflowerActivity; import com.edufound.reader.base.BaseMvpFragment; import com.edufound.reader.bean.UserEventEnum; import com.edufound.reader.contract.CharacterFragmentContract; import com.edufound.reader.presenter.CharacterFragmentPresenter; import com.edufound.reader.util.Consts; import com.edufound.reader.util.EfunboxUtil; import com.edufound.reader.util.GlideUtils; import com.jakewharton.rxbinding4.view.RxView; import com.jakewharton.rxbinding4.view.RxViewGroup; import com.jakewharton.rxbinding4.view.ViewGroupHierarchyChangeEvent; import com.orhanobut.logger.Logger; import java.util.HashMap; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import io.reactivex.rxjava3.annotations.Nullable; import io.reactivex.rxjava3.functions.Consumer; public class CharacterFragment extends BaseMvpFragment<CharacterFragmentPresenter> implements CharacterFragmentContract.View { View mRootView; HorizontalScrollView mScrollView; GridLayout mGridLayout; Space mBottomView; Rect mScreenRect; boolean isNeedLoad = false; @RequiresApi(api = Build.VERSION_CODES.M) @Override protected void initView(View view) { mRootView = view; mPresenter = new CharacterFragmentPresenter(getContext()); mPresenter.attachView(this); mScreenRect = new Rect(0, 0, Consts.getScreenSize()[0], Consts.getScreenSize()[1]); //初始化左侧广告UI ImageView mCharacterImage = view.findViewById(R.id.fragment_main_character_img); GlideUtils.loadImageSizeKipMemoryCache(getContext(), "http://reader-apk.ai160.com/reader-apk/res/character_image_1.png", mCharacterImage); mScrollView = view.findViewById(R.id.fragment_main_character_scrollview); mGridLayout = view.findViewById(R.id.fragment_my_recyclerview); mBottomView = view.findViewById(R.id.fragment_main_character_bottomview); addUiClick(mCharacterImage, o -> { if (EfunboxUtil.checkLogin(getActivity())) { mPresenter.getUserApi().postUserEvent(getActivity(), UserEventEnum.EVENT_INTEGRAL.getEvent()); toNextActivity(SafflowerActivity.class); } }); mPresenter.getExampleAll(); } @Override protected int getLayoutId() { return R.layout.fragment_main_character; } @SuppressLint("AutoDispose") @RequiresApi(api = Build.VERSION_CODES.M) @Override protected void initViewListener() { RxView.scrollChangeEvents(mScrollView).subscribe(viewScrollChangeEvent -> { if (mBottomView.getLocalVisibleRect(mScreenRect)) { if (isNeedLoad) { isNeedLoad = false; mPresenter.initGridLayout(mGridLayout); } } else { isNeedLoad = true; } }); } @Override public void showLoading() { } @Override public void hideLoading() { } @Override public void onError(String errMessage) { } @Override public ViewGroup getRootView() { return (ViewGroup) mRootView; } @Override public void addUiClick(View view, Consumer onNext) { addUiClickListener(view, onNext); } @Override public void getExampleAllSuccess() { mPresenter.initGridLayout(mGridLayout); } @Override public Space getBottomView() { return mBottomView; } @Override public void onDestroy() { isNeedLoad = true; mPresenter.onDestory(mGridLayout); super.onDestroy(); } @Override public void onGetDisconnect() { } @Override public void onGetMobileConnect() { } @Override public void onGetWifiConnect() { } @Override public void onDestroyView() { super.onDestroyView(); mPresenter.onDestory(mGridLayout); } }