优化viewpager 主页的问题

This commit is contained in:
2025-11-04 09:20:39 +08:00
parent 05e5459e6b
commit 9ac7cf86f3

View File

@@ -5,6 +5,7 @@ import android.util.Log;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Observer;
import androidx.viewpager.widget.ViewPager;
import com.tencent.mmkv.MMKV;
import com.ttstd.dialer.R;
@@ -37,7 +38,8 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
private ContactFragment mContactFragment;
private HomeFragment mHomeFragment;
private int mCurrentIndex = 0;
private int mDefaultIndex = 0;
private int mCurrentIndex = -1;
private int mFragmentSize = 0;
private int APK_PER_FRAGMENT = 9;
@@ -81,12 +83,12 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
mSettingsFragment = new SettingsFragment();
mFragments.add(mSettingsFragment);
mFragmentSize += 1;
mCurrentIndex += 1;
mDefaultIndex += 1;
}
boolean contactHome = mMMKV.decodeBool(CommonConfig.CONTACT_HOME_PAGE, false);
if (!contactHome) {
mCurrentIndex += 1;
mDefaultIndex += 1;
}
if (mContactFragment == null) {
mContactFragment = new ContactFragment();
@@ -114,13 +116,36 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
mViewDataBinding.viewPager.setAdapter(mApkPagerAdapter);
mViewDataBinding.viewPager.setOffscreenPageLimit(10);
mViewDataBinding.viewPager.setCurrentItem(mCurrentIndex);
mViewDataBinding.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
Log.e(TAG, "onPageScrolled: position = " + position);
if (mCurrentIndex == -1 && position == 0) {
mViewDataBinding.viewPager.setCurrentItem(mDefaultIndex);
mCurrentIndex = mDefaultIndex;
} else {
mCurrentIndex = position;
}
}
@Override
public void onPageSelected(int position) {
Log.e(TAG, "onPageSelected: position = " + position);
}
@Override
public void onPageScrollStateChanged(int state) {
Log.e(TAG, "onPageScrollStateChanged: state = " + state);
}
});
mViewDataBinding.magicIndicator.setNavigator(mScaleCircleNavigator);
ViewPagerHelper.bind(mViewDataBinding.magicIndicator, mViewDataBinding.viewPager);
mViewDataBinding.viewPager.setCurrentItem(mDefaultIndex);
Log.e(TAG, "initView: mCurrentIndex = " + mCurrentIndex);
Log.e(TAG, "initView: mDefaultIndex = " + mDefaultIndex);
Log.e(TAG, "initView: mFragmentSize = " + mFragmentSize);
}
@Override
@@ -169,6 +194,7 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
mScaleCircleNavigator.notifyDataSetChanged();
mApkPagerAdapter.setFragments(mFragments);
mViewDataBinding.viewPager.setCurrentItem(mCurrentIndex);
}
public class BtnClick {