我有一个 Android 应用程序,它使用一个带有两个页面的 ViewPager 当活动首次显示时,我想依次向用户展示每个页面,以便他们知道他们可以在两个视图之间滑动。我找不到任何描述如何执行此操作的文档。我发现 PageTransformations 听起来很有希望,但用户必须先滑动。我需要我的两个页面在 ViewPager 中的第一页显示后立即自动滚动。怎样才能达到预期的结果?
原文由 Hector 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个 Android 应用程序,它使用一个带有两个页面的 ViewPager 当活动首次显示时,我想依次向用户展示每个页面,以便他们知道他们可以在两个视图之间滑动。我找不到任何描述如何执行此操作的文档。我发现 PageTransformations 听起来很有希望,但用户必须先滑动。我需要我的两个页面在 ViewPager 中的第一页显示后立即自动滚动。怎样才能达到预期的结果?
原文由 Hector 发布,翻译遵循 CC BY-SA 4.0 许可协议
这个问题很老,但我希望它能帮助别人我使用 Runnable 的解决方案
简答
Runnable runnable = new Runnable() {
public void run() {
if (myAdapter.getCount() == page) {
page = 0;
} else {
page++;
}
viewPager.setCurrentItem(page, true);
handler.postDelayed(this, delay);
}
};
长答案 在活动中使用
public class activity extends AppCompatActivity {
private Handler handler;
private int delay = 5000; //milliseconds
private ViewPager viewPager;
private int page = 0;
private MyAdapter myAdapter;
Runnable runnable = new Runnable() {
public void run() {
if (myAdapter.getCount() == page) {
page = 0;
} else {
page++;
}
viewPager.setCurrentItem(page, true);
handler.postDelayed(this, delay);
}
};
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
handler = new Handler();
viewPager = (ViewPager) findViewById(R.id.viewPager);
myAdapter = new MyAdapter(getSupportFragmentManager());
viewPager.setAdapter(myAdapter);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
page = position;
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
@Override
protected void onResume() {
super.onResume();
handler.postDelayed(runnable, delay);
}
@Override
protected void onPause() {
super.onPause();
handler.removeCallbacks(runnable);
}
}
原文由 Luciano Marqueto 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答849 阅读✓ 已解决
2 回答2.1k 阅读
2 回答958 阅读✓ 已解决
1 回答746 阅读✓ 已解决
2 回答851 阅读
2 回答793 阅读
1 回答725 阅读
为此,您可以使用
Timer
。以下代码是不言自明的:Note 1: Make sure that you call
pageSwitcher
method after setting upadapter
to theviewPager
properly insideonCreate
method of your activity.注2: 每次启动时
viewPager
都会滑动。您必须对其进行处理,使其仅在所有页面中滑动一次(当用户第一次查看viewPager
时)注意 3: 如果您还想减慢
viewPager
的滚动速度,您可以 在 StackOverflow 上按照此答案进行操作。如果这对您没有帮助,请在评论中告诉我…