admin
2021-12-21 b66ce25e05039f171da63457915accd1a93acf23
3.10.9首页切换fragmentswitcher更改
6个文件已修改
1个文件已添加
145 ■■■■■ 已修改文件
BuWanVideo/AndroidManifest.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/ui/main/DYNewsFragment.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/ui/main/DYVideoFragment.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/ui/main/DrawVideoFragment.java 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/ui/main/MainActivity.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/ui/main/NovelFragment.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
library-common/src/com/lcjian/library/util/FragmentSwitchHelperV2.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/AndroidManifest.xml
@@ -316,7 +316,7 @@
            android:value="570f28a578d6e12cba6f7f200b8d1c83"></meta-data>
        <meta-data
            android:name="UMENG_CHANNEL"
            android:value="xiaomi"></meta-data>
            android:value="huawei"></meta-data>
        <provider
BuWanVideo/src/com/weikou/beibeivideo/ui/main/DYNewsFragment.java
@@ -140,7 +140,7 @@
        Fragment fragment = mIDPWidget.getFragment();
        if (fragment != null) {
            fragmentManager.beginTransaction().replace(R.id.fl_content, fragment).commitAllowingStateLoss();
            getChildFragmentManager().beginTransaction().replace(R.id.fl_content, fragment).commitAllowingStateLoss();
        }
    }
BuWanVideo/src/com/weikou/beibeivideo/ui/main/DYVideoFragment.java
@@ -33,11 +33,18 @@
    private static final String TAG = "DYVideoFragment";
    private IDPWidget mIDPWidget;
    private MySwipeRefreshLayout swipeRefreshLayout;
    private FragmentManager fragmentManager;
    public DYVideoFragment() {
        super();
        setName(DYNewsFragment.class.getName());
    }
    public DYVideoFragment(FragmentManager fragmentManager) {
        super();
        setName(DYNewsFragment.class.getName());
        this.fragmentManager=fragmentManager;
    }
    @Override
@@ -144,7 +151,11 @@
        Fragment fragment = mIDPWidget.getFragment();
        if (fragment != null) {
            getChildFragmentManager().beginTransaction().add(R.id.fl_content, fragment).commitAllowingStateLoss();
            if(fragmentManager!=null) {
                fragmentManager.beginTransaction().add(R.id.fl_content, fragment).commitAllowingStateLoss();
            }else{
                getChildFragmentManager().beginTransaction().add(R.id.fl_content, fragment).commitAllowingStateLoss();
            }
        }
    }
BuWanVideo/src/com/weikou/beibeivideo/ui/main/DrawVideoFragment.java
@@ -49,6 +49,7 @@
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.viewpager.widget.ViewPager;
@@ -61,6 +62,10 @@
    private FragmentManager fragmentManager;
    private MagicIndicator magic_indicator;
    private ViewPager vp_draw_videos;
    private DYVideoFragment mDYVideoFragment;
    private KSVideoFragment mKSVideoFragment;
    private DrawVideoTypesAdapter mDrawVideoTypesAdapter;
    public DrawVideoFragment() {
        super();
@@ -96,6 +101,26 @@
        Log.i(TAG, "onCreate");
    }
    @Override
    public void onHiddenChanged(boolean hidden) {
        Log.i(TAG, "onHiddenChanged:" + hidden);
        super.onHiddenChanged(hidden);
        if (mDrawVideoTypesAdapter != null) {
            int position = vp_draw_videos.getCurrentItem();
            Fragment fragment = mDrawVideoTypesAdapter.getItem(position);
            if (fragment instanceof DYVideoFragment) {
                if (mDYVideoFragment != null) {
                    mDYVideoFragment.onHiddenChanged(hidden);
                }
            } else if (fragment instanceof KSVideoFragment) {
                if (mKSVideoFragment != null) {
                    mKSVideoFragment.onHiddenChanged(hidden);
                }
            }
        }
    }
    private void initView(View view) {
        magic_indicator = view.findViewById(R.id.magic_indicator);
        vp_draw_videos = view.findViewById(R.id.vp_draw_videos);
@@ -109,7 +134,8 @@
    }
    public void init() {
        vp_draw_videos.setAdapter(new DrawVideoTypesAdapter(getChildFragmentManager()));
        mDrawVideoTypesAdapter = new DrawVideoTypesAdapter(getChildFragmentManager());
        vp_draw_videos.setAdapter(mDrawVideoTypesAdapter);
        CommonNavigator commonNavigator = new CommonNavigator(getActivity());
        commonNavigator.setAdapter(navigatorAdapter);
        commonNavigator.setAdjustMode(true);
@@ -144,7 +170,7 @@
            });
            colorTransitionPagerTitleView.setTextSize(18);
            colorTransitionPagerTitleView.getPaint().setFakeBoldText(true);
            colorTransitionPagerTitleView.setShadowLayer(3.0f,0,2,Color.parseColor("#80000000"));
            colorTransitionPagerTitleView.setShadowLayer(3.0f, 0, 2, Color.parseColor("#80000000"));
            return colorTransitionPagerTitleView;
@@ -164,11 +190,11 @@
    class DrawVideoTypesAdapter extends FragmentStatePagerAdapter {
        private FragmentManager fm;
        public DrawVideoTypesAdapter(@NonNull FragmentManager fm) {
            super(fm);
            this.fm = fm;
            mDYVideoFragment = new DYVideoFragment();
            mKSVideoFragment = new KSVideoFragment();
        }
        @Override
@@ -182,12 +208,12 @@
            Log.i(TAG, "getItem:" + position);
            if (getTypeCount() > 1) {
                if (position == 0) {
                    return new DYVideoFragment();
                    return mDYVideoFragment;
                } else {
                    return new KSVideoFragment();
                    return mKSVideoFragment;
                }
            } else {
                return new KSVideoFragment();
                return mKSVideoFragment;
            }
        }
BuWanVideo/src/com/weikou/beibeivideo/ui/main/MainActivity.java
@@ -27,6 +27,7 @@
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.lcjian.library.util.FragmentSwitchHelper;
import com.lcjian.library.util.FragmentSwitchHelperV2;
import com.lcjian.library.util.ManifestDataUtil;
import com.lcjian.library.util.common.StringUtils;
import com.mozillaonline.providers.downloads.DownloadService;
@@ -106,7 +107,7 @@
    private RadioGroup rg_nav;
    private FragmentSwitchHelper mFragmentSwitchHelper;
    private FragmentSwitchHelperV2 mFragmentSwitchHelper;
    private AQuery mAQuery;
@@ -198,7 +199,7 @@
        initialer.run();
        mFragmentSwitchHelper = FragmentSwitchHelper.create(
        mFragmentSwitchHelper = FragmentSwitchHelperV2.create(
                R.id.fl_main_fragment_container, getSupportFragmentManager(), getFragments()
        );
        rg_nav = findViewById(R.id.rg_nav);
BuWanVideo/src/com/weikou/beibeivideo/ui/main/NovelFragment.java
@@ -66,7 +66,7 @@
    @Override
    public void onCreateView(View contentView, Bundle savedInstanceState) {
        fragmentManager.beginTransaction().replace(R.id.fl_container, NovelSDK.INSTANCE.getNovelFragment(), "novel").commitAllowingStateLoss();
        getChildFragmentManager().beginTransaction().replace(R.id.fl_container, NovelSDK.INSTANCE.getNovelFragment(), "novel").commitAllowingStateLoss();
    }
library-common/src/com/lcjian/library/util/FragmentSwitchHelperV2.java
New file
@@ -0,0 +1,81 @@
package com.lcjian.library.util;
import android.util.Log;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
public class FragmentSwitchHelperV2 {
    private static final String TAG = "FragmentSwitchHelperV2";
    public FragmentManager mFragmentManager;
    private Fragment[] mFragments;
    private Fragment mCurrentFragment;
    private int mContainerId;
    public Fragment getFragmentByName(String name) {
        if (mFragments == null || mFragments.length == 0)
            return null;
        for (Fragment m : mFragments)
            if (name.contains(m.getClass().getName())) {
                return m;
            }
        return null;
    }
    public static FragmentSwitchHelperV2 create(int containerId,
                                                FragmentManager fragmentManager, Fragment... fragments) {
        return new FragmentSwitchHelperV2(containerId, fragmentManager, fragments);
    }
    private FragmentSwitchHelperV2(int containerId,
                                   FragmentManager fragmentManager, Fragment... fragments) {
        this.mContainerId = containerId;
        this.mFragments = fragments;
        this.mFragmentManager = fragmentManager;
    }
    public void changeFragment(Class<? extends Fragment> replaceFragmentClass) {
        if (!mFragmentManager.isDestroyed()) {
            Fragment replaceFragment = mFragmentManager
                    .findFragmentByTag(replaceFragmentClass.getName());
            if (mCurrentFragment == replaceFragment && mCurrentFragment != null) {
                Log.d(TAG, "changeFragment noChange ");
                return;
            }
            FragmentTransaction fragmentTransaction = mFragmentManager
                    .beginTransaction();
            if (mCurrentFragment != null) {
                fragmentTransaction.hide(mCurrentFragment);
                Log.d(TAG, "changeFragment detach "
                        + mCurrentFragment.getClass().getName());
            }
            if (replaceFragment == null) {
                for (Fragment item : mFragments) {
                    if (item.getClass().getName()
                            .equals(replaceFragmentClass.getName())) {
                        replaceFragment = item;
                        break;
                    }
                }
                fragmentTransaction.add(mContainerId, replaceFragment,
                        replaceFragmentClass.getName());
                Log.d(TAG,
                        "changeFragment add " + replaceFragmentClass.getName());
            } else {
                fragmentTransaction.show(replaceFragment);
                Log.d(TAG,
                        "changeFragment attach "
                                + replaceFragmentClass.getName());
            }
            fragmentTransaction.commitAllowingStateLoss();
            mCurrentFragment = replaceFragment;
        }
    }
}