Bladeren bron

使用ViewPager方法setOffscreenPageLimit来预加载发现中的子fragment,并将发现模块从主页ViewPager中提出来

(cherry picked from commit 0477ee2)
zengjiebin 7 jaren geleden
bovenliggende
commit
6d25e70883

+ 4 - 1
app/src/main/java/com/kfzs/duanduan/fragment/FgtFind.java

@@ -111,12 +111,14 @@ public class FgtFind extends BaseCompatFragment {
                 @Override
                 public void call(String url) {
                     int awaken_on = NumberFormatUtils.parseInteger(url);
-
+                    int count = 1;
                     if (awaken_on == 1) {
+                        count++;
                         mAdapter.add(new FgtRouser(), "看点");
                     }
                     for (FindTag findLabel : list) {
                         mAdapter.add(FgtFindChild.newInstance(findLabel.getId()), findLabel.getName());
+                        count++;
                     }
                     pager.setAdapter(mAdapter);
                     indicator.setupWithViewPager(pager);
@@ -137,6 +139,7 @@ public class FgtFind extends BaseCompatFragment {
                         }
                     });
                     CommonUtil.getInstance().reflex(indicator, activity);
+                    pager.setOffscreenPageLimit(count);
 
                 }
             });

+ 20 - 0
app/src/main/java/com/kfzs/duanduan/fragment/FgtNull.java

@@ -0,0 +1,20 @@
+package com.kfzs.duanduan.fragment;
+
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.base.BaseFragment;
+
+/**
+ * Created by realicing on 2018/8/30.
+ * realicing@sina.com
+ */
+public class FgtNull extends BaseFragment {
+    @Override
+    public int getLayoutId() {
+        return R.layout.empty;
+    }
+
+    @Override
+    public void onViewCreated() {
+
+    }
+}

+ 2 - 1
app/src/main/java/com/kfzs/duanduan/react/MainTab.java

@@ -5,6 +5,7 @@ import android.support.v4.app.Fragment;
 import com.kfzs.duanduan.ActMain;
 import com.kfzs.duanduan.fragment.FgtAskgetmoney;
 import com.kfzs.duanduan.fragment.FgtFind;
+import com.kfzs.duanduan.fragment.FgtNull;
 import com.kfzs.duanduan.fragment.FgtPersonalCenter;
 import com.kfzs.duanduan.fragment.FgtSmallSheep;
 import com.sheep.gamegroup.view.fragment.FgtMainAudit;
@@ -51,7 +52,7 @@ public enum MainTab {
     Fgt_Find(R.string.main_tab_find) {
         @Override
         public Fragment getFragment() {
-            return new FgtFind();
+            return new FgtNull();
         }
 
         @Override

+ 28 - 4
app/src/main/java/com/kfzs/duanduan/react/TabsHelper.java

@@ -1,6 +1,8 @@
 package com.kfzs.duanduan.react;
 
+import android.os.Bundle;
 import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentTransaction;
 import android.support.v4.view.ViewPager;
 import android.view.View;
 import android.widget.LinearLayout;
@@ -11,12 +13,11 @@ import com.kf.utils.ToastBuilder;
 import com.kfzs.duanduan.ActMain;
 import com.kfzs.duanduan.KFZSApp;
 import com.kfzs.duanduan.adp.ViewPagerFragmentAdapter;
-import com.kfzs.duanduan.adp.ViewPagerFragmentStateAdapter;
 import com.kfzs.duanduan.fragment.FgtFind;
 import com.kfzs.duanduan.fragment.FgtPersonalCenter;
 import com.kfzs.duanduan.fragment.FgtSmallSheep;
-import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.DrawablesHelper;
+import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.gamegroup.view.fragment.FgtMainAudit;
@@ -114,7 +115,7 @@ public class TabsHelper {
                         FgtSmallSheep fgtSmallSheep = (FgtSmallSheep) fragmentList.get(sheepPosition);
                         FgtPersonalCenter personnalCenter = (FgtPersonalCenter) fragmentList.get(personnalPosition);
                         FgtMainAudit auditFgt = (FgtMainAudit) fragmentList.get(auditPosition);
-                        FgtFind findFgt = (FgtFind) fragmentList.get(fPosition);
+//                        FgtFind findFgt = (FgtFind) fragmentList.get(fPosition);
                         if(position == sheepPosition){
                             fgtSmallSheep.onResume();
                         } else {
@@ -127,7 +128,7 @@ public class TabsHelper {
                             auditFgt.onResume();
                         }
                         if(position == fPosition){
-                            findFgt.onResume();
+//                            findFgt.onResume();
                         }
                         checkWhichPage(position);
                     }
@@ -206,6 +207,7 @@ public class TabsHelper {
                 if (lastPosition > -1)
                     tabs.get(lastPosition).setActivated(false);
                 tabs.get(position).setActivated(true);
+                showFind(position == MainTab.Fgt_Find.ordinal());
                 //更新position
                 lastPosition = position;
             }
@@ -221,10 +223,32 @@ public class TabsHelper {
         checkViewState(lastPosition);
     }
 
+    private void showFind(boolean isFind) {
+        View frame_container = activity.findViewById(R.id.frame_container);
+        if(isFind)
+            frame_container.bringToFront();
+        else
+            other_container.bringToFront();
+    }
+
     public void init() {
         initViews();
         initArrays();
         initViewPager();
+
+        FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction();
+        Bundle bundle = new Bundle();
+        Fragment fragment = activity.getSupportFragmentManager().findFragmentByTag("tag");
+        if(fragment == null){
+            fragment = new FgtFind();
+            fragment.setArguments(bundle);
+            transaction.add(R.id.frame_container, fragment, "tag");
+            transaction.commitAllowingStateLoss();
+        }else {
+            fragment.setArguments(bundle);
+            transaction.replace(R.id.frame_container, fragment);
+            transaction.commitAllowingStateLoss();
+        }
     }
 
     private long lastbackrn = 0;

+ 6 - 0
app/src/main/res/layout/act_find.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/frame_container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_marginBottom="@dimen/bottom_height" />

+ 1 - 1
app/src/main/res/layout/activity_main.xml

@@ -4,6 +4,7 @@
     android:layout_height="match_parent"
     android:fitsSystemWindows="true">
 
+    <include layout="@layout/act_find"/>
     <LinearLayout
         android:id="@+id/other_container"
         android:layout_width="match_parent"
@@ -28,7 +29,6 @@
         android:layout_height="@dimen/app_nav_toolbar_height"
         android:layout_alignParentTop="true"
         android:visibility="gone"/>
-
     <RelativeLayout
         android:id="@+id/layout_bottom"
         android:layout_width="match_parent"