【光环助手V5.10.0】游戏库功能优化 https://git.shanqu.cc/pm/halo-app-issues/-/issues/1834
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user