【光环助手V5.10.0】游戏库功能优化 https://git.shanqu.cc/pm/halo-app-issues/-/issues/1834

This commit is contained in:
张玉久
2022-05-16 15:09:03 +08:00
parent 5ef4f1d14c
commit a1be8352f0
7 changed files with 170 additions and 49 deletions

View File

@ -29,13 +29,14 @@ import com.facebook.imagepipeline.image.ImageInfo;
import com.gh.common.constant.Config;
import com.gh.common.dialog.PrivacyPolicyDialogFragment;
import com.gh.common.dialog.ReserveDialog;
import com.gh.common.exposure.ExposureSource;
import com.gh.common.tracker.TrackerLogger;
import com.gh.common.util.DataUtils;
import com.gh.common.util.FloatingBackViewManager;
import com.gh.common.util.HomeBottomBarHelper;
import com.gh.common.util.IntegralLogHelper;
import com.gh.common.util.LogUtils;
import com.gh.gamecenter.R;
import com.gh.gamecenter.category2.CategoryV2Fragment;
import com.gh.gamecenter.common.base.fragment.BaseFragment_ViewPager_Checkable;
import com.gh.gamecenter.common.callback.BiCallback;
import com.gh.gamecenter.common.callback.OnDoubleTapListener;
@ -47,6 +48,7 @@ import com.gh.gamecenter.common.utils.NightModeUtils;
import com.gh.gamecenter.core.utils.DisplayUtils;
import com.gh.gamecenter.databinding.FragmentMainBinding;
import com.gh.gamecenter.entity.SettingsEntity;
import com.gh.gamecenter.entity.SubjectData;
import com.gh.gamecenter.entity.SubjectRecommendEntity;
import com.gh.gamecenter.entity.WelcomeDialogEntity;
import com.gh.gamecenter.eventbus.EBReuse;
@ -54,11 +56,18 @@ import com.gh.gamecenter.eventbus.EBSkip;
import com.gh.gamecenter.eventbus.EBUISwitch;
import com.gh.gamecenter.forum.home.CommunityHomeFragment;
import com.gh.gamecenter.game.GameFragment;
import com.gh.gamecenter.game.columncollection.detail.ColumnCollectionDetailFragment;
import com.gh.gamecenter.game.commoncollection.detail.CommonCollectionDetailFragment;
import com.gh.gamecenter.gamecollection.square.GameCollectionSquareFragment;
import com.gh.gamecenter.message.MessageUnreadRepository;
import com.gh.gamecenter.message.MessageUnreadViewModel;
import com.gh.gamecenter.personal.PersonalFragment;
import com.gh.gamecenter.servers.GameServersPublishFragment;
import com.gh.gamecenter.servers.GameServersTestFragment;
import com.gh.gamecenter.subject.SubjectFragment;
import com.gh.gamecenter.video.detail.HomeVideoFragment;
import com.halo.assistant.HaloApp;
import com.halo.assistant.fragment.WebFragment;
import com.lightgame.listeners.OnBackPressedListener;
import com.lightgame.view.CheckableLinearLayout;
import com.lightgame.view.NoScrollableViewPager;
@ -116,11 +125,7 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem
mHomeFragment = new HomeSearchToolWrapperFragment();
fragments.add(mHomeFragment);
mGameWrapperFragment = new SearchToolWrapperFragment();
Bundle homeArgs = new Bundle();
homeArgs.putBoolean(EntranceConsts.KEY_IS_HOME, true);
homeArgs.putString(SearchToolWrapperFragment.WRAPPER_FRAGMENT_NAME, GameFragment.class.getName());
mGameWrapperFragment.setArguments(homeArgs);
initGameWrapperFragment();
fragments.add(mGameWrapperFragment);
mHomeVideoFragment = new HomeVideoFragment();
@ -139,6 +144,80 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem
fragments.add(new PersonalFragment());
}
private void initGameWrapperFragment() {
mGameWrapperFragment = new SearchToolWrapperFragment();
Bundle homeArgs = new Bundle();
String className = GameFragment.class.getName();
SubjectRecommendEntity entity = mViewModel.getNavBar().getValue();
if (entity == null) {
entity = HomeBottomBarHelper.getDefaultGameBarData();
}
if (entity.getType() != null) {
switch (entity.getType()) {
case "block":
className = GameFragment.class.getName();
break;
case "column":
className = SubjectFragment.class.getName();
homeArgs.putString(EntranceConsts.KEY_ENTRANCE, "游戏库");
homeArgs.putParcelable(
EntranceConsts.KEY_SUBJECT_DATA,
new SubjectData(entity.getLink(), entity.getText(), false, "", "", "", "", true, false)
);
break;
case "column_collection":
className = ColumnCollectionDetailFragment.class.getName();
homeArgs.putString(EntranceConsts.KEY_ENTRANCE, "游戏库");
homeArgs.putString(EntranceConsts.KEY_COLLECTION_ID, entity.getLink());
homeArgs.putInt(EntranceConsts.KEY_POSITION, 0);
homeArgs.putString(EntranceConsts.KEY_COLUMNNAME, entity.getText());
homeArgs.putBoolean(EntranceConsts.KEY_IS_COLUMN_COLLECTION, true);
break;
case "server":
className = GameServersPublishFragment.class.getName();
break;
case "column_test":
className = GameServersTestFragment.class.getName();
homeArgs.putString(GameServersTestFragment.TEST_COLUMN_ID, entity.getLink());
break;
case "category_v2":
className = CategoryV2Fragment.class.getName();
homeArgs.putString(EntranceConsts.KEY_CATEGORY_ID, entity.getLink());
homeArgs.putString(EntranceConsts.KEY_CATEGORY_TITLE, entity.getText());
break;
case "common_collection":
className = CommonCollectionDetailFragment.class.getName();
homeArgs.putString(EntranceConsts.KEY_ENTRANCE, "游戏库");
homeArgs.putString(EntranceConsts.KEY_COLLECTION_ID, entity.getLink());
homeArgs.putString(EntranceConsts.KEY_COLUMNNAME, entity.getText());
break;
case "game_list":
className = GameCollectionSquareFragment.class.getName();
homeArgs.putString(EntranceConsts.KEY_ENTRANCE, "游戏库");
homeArgs.putInt(EntranceConsts.KEY_TAB_INDEX, 0);
homeArgs.putString(EntranceConsts.KEY_NAME, entity.getName());
break;
case "web":
className = WebFragment.class.getName();
homeArgs.putString(EntranceConsts.KEY_URL, entity.getLink());
homeArgs.putBoolean(WebFragment.KEY_OPEN_NATIVE_PAGE, false);
homeArgs.putBoolean(WebFragment.KEY_ENABLE_HORIZONTAL_SCROLL_DISPATCH, true);
if (entity.getLink() != null && entity.getLink().contains("leave_web_page_handle_back_pressed=true")) {
homeArgs.putBoolean(WebFragment.KEY_LEAVE_WEB_PAGE_TO_HANDLE_BACK_PRESSED, true);
}
break;
}
}
homeArgs.putString(SearchToolWrapperFragment.WRAPPER_FRAGMENT_NAME, className);
homeArgs.putBoolean(EntranceConsts.KEY_IS_HOME, true);
homeArgs.putParcelable(
EntranceConsts.KEY_EXPOSURE_SOURCE,
new ExposureSource("游戏库", "")
);
mGameWrapperFragment.setArguments(homeArgs);
}
@Override
public ArrayList<Fragment> restoreFragments() {
ArrayList<Fragment> restoreFragments = super.restoreFragments();
@ -158,7 +237,7 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem
@Override
public void onCreate(Bundle savedInstanceState) {
mViewModel = ViewModelProviders.of(this).get(MainWrapperViewModel.class);
mViewModel = ViewModelProviders.of(this, new MainWrapperViewModel.Factory(HaloApp.getInstance())).get(MainWrapperViewModel.class);
super.onCreate(savedInstanceState);
@ -193,7 +272,7 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem
.get(MessageUnreadViewModel.class)
.getUnreadMessageTotalLiveData().observe(this, isShow -> ExtensionsKt.goneIf(mBinding.mainIvMessageHint, !isShow));
}
public void getDialog() {
mViewModel.requestOpeningData();
mViewModel.getPrivacyPolicyDialog().observe(this, it -> {
@ -207,7 +286,7 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem
}
});
}
private void showWelcomeDialogIfNeeded(WelcomeDialogEntity welcomeDialogEntity) {
// 判断启动本次应用是否已经弹窗,不是的话弹启动弹窗
if (welcomeDialogEntity != null && HaloApp.get(MainWrapperViewModel.SHOULD_SHOW_OPENING_DIALOG, false) == null) {
@ -217,7 +296,7 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem
public void onFirst(Bitmap bitmap) {
// 网络速度追不上用户操作的时候可能会出现要弹启动弹窗但用户已经不停留在 MainActivity 的情况
if (!isAdded()) return;
WelcomeDialogFragment welcomeDialog = WelcomeDialogFragment.getInstance(welcomeDialogEntity);
welcomeDialog.setOnDismissListener(() -> {
mViewModel.requestReserveDialog();
@ -225,7 +304,7 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem
});
welcomeDialog.show(getChildFragmentManager(), "openingDialog");
}
@Override
public void onSecond(Boolean aBoolean) {
mViewModel.requestReserveDialog();
@ -242,7 +321,7 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem
mBinding.mainTabGameName.setText(navBarEntity.getName());
ImageUtils.getPicasso()
.load(Uri.parse(navBarEntity.getIconUnselect()))
.placeholder(R.drawable.ic_game_unselect)
//.placeholder(R.drawable.ic_game_unselect)
.into(mBinding.mainTabGameIcon);
if (navBarEntity.getDefault()) setCurrentItem(INDEX_GAME);
} else {
@ -477,12 +556,12 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem
if (index == INDEX_GAME) {
ImageUtils.getPicasso()
.load(Uri.parse(navBarEntity.getIconSelect()))
.placeholder(R.drawable.ic_game_select)
//.placeholder(R.drawable.ic_game_select)
.into(mBinding.mainTabGameIcon);
} else {
ImageUtils.getPicasso()
.load(Uri.parse(navBarEntity.getIconUnselect()))
.placeholder(R.drawable.ic_game_unselect)
//.placeholder(R.drawable.ic_game_unselect)
.into(mBinding.mainTabGameIcon);
}
}