gpt4 book ai didi

android - 如何知道页面是从Viewpager的Swipe还是Click of Tab选中的

转载 作者:行者123 更新时间:2023-11-29 00:05:17 24 4
gpt4 key购买 nike

我有一个 ViewPager 工具栏选项卡。

我必须知道用户点击选项卡的次数以及用户滑动和选择页面的次数。

为此,我正在使用 ViewPager.OnPageChangeListener()。

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override public void onPageSelected(int position) {
// Here i am sending the GA event
}

@Override public void onPageScrollStateChanged(int state) {

}
});

OnPageSelected 在点击和滑动页面时被调用。我将如何区分所选页面是单击选项卡还是从 Viewpager 滑动?

最佳答案

这是我的解决方案。我基于单个变量。

public class MainActivity extends AppCompatActivity {

// remember last action
private Action lastAction = Action.RESET;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// ...

mViewPager = findViewById(R.id.viewPager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
// No-op
}

@Override
public void onPageSelected(int i) {
if (lastAction == Action.RESET) {
lastAction = Action.SWIPE;
Log.d(TAG, "onPageSelected: SWIPED");
} else {
lastAction = Action.RESET;
}
}

@Override
public void onPageScrollStateChanged(int i) {
// No-op
}
});

mTabLayout = findViewById(R.id.tabLayout);
mTabLayout.setupWithViewPager(mViewPager);
mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
if (lastAction == Action.RESET) {
lastAction = Action.SELECT;
Log.d(TAG, "onPageSelected: SELECTED");
} else {
lastAction = Action.RESET;
}
}

@Override
public void onTabUnselected(TabLayout.Tab tab) {
// No-op
}

@Override
public void onTabReselected(TabLayout.Tab tab) {
// No-op
}
});
}
}

限制:

viewPager 的内容必须在添加监听器之前加载,因为此解决方案基于有序调用(onTabSelected、onPageSelected)。

预览:

enter image description here

关于android - 如何知道页面是从Viewpager的Swipe还是Click of Tab选中的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34311912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com