java - 向右或向左滑动 ViewPager 会导致自运行幻灯片出现计时问题
问题描述
我用 ViewPager 创建了一个幻灯片,并安排了 4 秒的延迟并执行下一张幻灯片。我想在手动向左或向右滑动时,它会暂停并等待 4 秒钟然后转到下一张幻灯片,但手动滑动幻灯片被计时器关闭并在 4 秒前自动转到正在进行的幻灯片。我搜索了 stackoverflow 和互联网,但没有找到任何解决方案。这是我的代码:
活动主.xml:
<RelativeLayout ...>
<androidx.viewpager.widget.ViewPager
android:layout_width="match_parent"
android:layout_height="220dp"
android:id="@+id/viewPager_id"
android:layout_below="@id/toolbar_id" />
.
.
.
</RelativeLayout>
在 MainActivity.java 中:
ViewPager viewPager;
SlideShowAdapter adapter;
Handler handler;
Runnable runnable;
Timer timer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewPager_id);
adapter = new SlideShowAdapter(this);
viewPager.setAdapter(adapter);
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
int i = viewPager.getCurrentItem();
if (i==adapter.images.length-1){
i=0;
viewPager.setCurrentItem(i,true);
}else {
i++;
viewPager.setCurrentItem(i,true);
}
}
};
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.post(runnable);
}
},4000,4000);
}
}
解决方案
推荐阅读
- c - 为什么我的程序返回 true,因为结果应该是 false?
- flutter - 如何检查url链接是否存在并在flutter中获取statusCode?
- puppeteer - 使用 puppeteer.connect() 连接到打开的 chrome 结果“意外的服务器响应:404”错误
- python - 失去与内核的连接后,如何保存在浏览器中打开的 Jupyter 笔记本的副本?
- c - 将硬编码地址分配给C中的指针
- python - 运行 Django 和 GRPC 相同的应用程序
- javascript - Javascript:获取 api 与 AJAX
- kubernetes - Pod 处于待处理状态
- git - 如何在 MacOS 中将 git 的默认代码编辑器更改为 coderunner4(一个 macOS 应用程序)
- c - 我如何像我们在 Go 中那样在 C 中实现并发?