图片轮播计时器 Android
Timer for Image carousel Android
我已经为我的应用创建了图片轮播。实际上,为了尝试,它包括 5 个横幅。
我会插入定时器来自动切换横幅,但我找不到正确的方法。
这是我的带有幻灯片代码的 MainActivity 文件:
viewPager = findViewById(R.id.viewPagerId);
mList = new ArrayList<>();
mList.add(new ModalClass(R.drawable.banner_eeee , "Title"));
mList.add(new ModalClass(R.drawable.banner_gggg , "Title"));
mList.add(new ModalClass(R.drawable.banner_ffff , "Title"));
mList.add(new ModalClass(R.drawable.banner_gggg , "Title"));
mList.add(new ModalClass(R.drawable.banner_eeee , "Title"));
SlideHomepageAdapter slideHomepageAdapter = new SlideHomepageAdapter(this, mList);
viewPager.setAdapter(slideHomepageAdapter);
你能帮帮我吗?
感谢您的回答。
您可以为此使用 ScheduledExecutorService
:
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(updateToNextImage, 0, 3000, TimeUnit.MILLISECONDS);
updateToNextImage
Runnable
应该处理图像的切换。像这样:
Runnable updateToNextImage = new Runnable() {
@Override
public void run() {
runOnUiThread(
new Runnable() {
@Override
public void run() {
// Modify ui on the main thread
viewPager.setCurrentItem(currentImageIndex++ % imageCount, true);
}
}
);
}
};
完成后别忘了关闭它:
executor.shutdown();
好的,那么代码应该是:
viewPager = findViewById(R.id.viewPagerId);
mList = new ArrayList<>();
mList.add(new ModalClass(R.drawable.banner_eeee , "Title"));
mList.add(new ModalClass(R.drawable.banner_gggg , "Title"));
mList.add(new ModalClass(R.drawable.banner_ffff , "Title"));
mList.add(new ModalClass(R.drawable.banner_gggg , "Title"));
mList.add(new ModalClass(R.drawable.banner_eeee , "Title"));
SlideHomepageAdapter slideHomepageAdapter = new SlideHomepageAdapter(this, mList);
viewPager.setAdapter(slideHomepageAdapter);
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(updateToNextImage, 0, 3000, TimeUnit.MILLISECONDS);
Runnable updateToNextImage = new Runnable() {
@Override
public void run() {
runOnUiThread(
new Runnable() {
@Override
public void run() {
// Modify ui on the main thread
viewPager.setCurrentItem(currentImageIndex++ % imageCount, true);
}
}
);
}
};
executor.shutdown();
抱歉,我是新手。
我已经为我的应用创建了图片轮播。实际上,为了尝试,它包括 5 个横幅。
我会插入定时器来自动切换横幅,但我找不到正确的方法。
这是我的带有幻灯片代码的 MainActivity 文件:
viewPager = findViewById(R.id.viewPagerId);
mList = new ArrayList<>();
mList.add(new ModalClass(R.drawable.banner_eeee , "Title"));
mList.add(new ModalClass(R.drawable.banner_gggg , "Title"));
mList.add(new ModalClass(R.drawable.banner_ffff , "Title"));
mList.add(new ModalClass(R.drawable.banner_gggg , "Title"));
mList.add(new ModalClass(R.drawable.banner_eeee , "Title"));
SlideHomepageAdapter slideHomepageAdapter = new SlideHomepageAdapter(this, mList);
viewPager.setAdapter(slideHomepageAdapter);
你能帮帮我吗?
感谢您的回答。
您可以为此使用 ScheduledExecutorService
:
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(updateToNextImage, 0, 3000, TimeUnit.MILLISECONDS);
updateToNextImage
Runnable
应该处理图像的切换。像这样:
Runnable updateToNextImage = new Runnable() {
@Override
public void run() {
runOnUiThread(
new Runnable() {
@Override
public void run() {
// Modify ui on the main thread
viewPager.setCurrentItem(currentImageIndex++ % imageCount, true);
}
}
);
}
};
完成后别忘了关闭它:
executor.shutdown();
好的,那么代码应该是:
viewPager = findViewById(R.id.viewPagerId);
mList = new ArrayList<>();
mList.add(new ModalClass(R.drawable.banner_eeee , "Title"));
mList.add(new ModalClass(R.drawable.banner_gggg , "Title"));
mList.add(new ModalClass(R.drawable.banner_ffff , "Title"));
mList.add(new ModalClass(R.drawable.banner_gggg , "Title"));
mList.add(new ModalClass(R.drawable.banner_eeee , "Title"));
SlideHomepageAdapter slideHomepageAdapter = new SlideHomepageAdapter(this, mList);
viewPager.setAdapter(slideHomepageAdapter);
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(updateToNextImage, 0, 3000, TimeUnit.MILLISECONDS);
Runnable updateToNextImage = new Runnable() {
@Override
public void run() {
runOnUiThread(
new Runnable() {
@Override
public void run() {
// Modify ui on the main thread
viewPager.setCurrentItem(currentImageIndex++ % imageCount, true);
}
}
);
}
};
executor.shutdown();
抱歉,我是新手。