我创建了一个应用程序,将图像上传到Firebase,然后检索它们并将其显示在viewpager中。 我能够检索所有图像,但是我的问题是,在viewpager中,它们从第一个图像到最后一个图像的速度非常快(我看不到其他图像,我只能看到第一个然后是最后一个)。 / p>
我尝试添加一个循环,该循环只是不断增加一个数字以延迟应用程序的运行,但是没有成功。 接下来,我使用一个处理程序作为延迟器,但是没有用。 这是我的代码当前的样子-它在TimerTask类中,因为viewpager自动滑动,外观很简单
public class MyTimerTask extends TimerTask{
@Override
public void run() {
menuSliderActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
int i=0;
while(i<sliderImg.size()){
while (viewPager.getCurrentItem()==i){
viewPager.setCurrentItem(i+1);
i++;
}
}
if (viewPager.getCurrentItem()==sliderImg.size()) {
viewPager.setCurrentItem(0);
}
}
});
}
}
我也尝试过:
public class MyTimerTask extends TimerTask{
@Override
public void run() {
menuSliderActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
int i=0;
while(i<=sliderImg.size()){
if(viewPager.getCurrentItem()==i){
viewPager.setCurrentItem(i+1);
} else if (viewPager.getCurrentItem()==sliderImg.size()) {
viewPager.setCurrentItem(0);
}
i++;
}
}
});
}
}
有人知道我在做什么错吗? (我是android studio和java的新手,所以我可能使用了-runnable(),run()等功能)错误。 谢谢。
答案 0 :(得分:0)
您应该使用CountDownTimer在ViewPager中循环播放图像。因此它会根据需要缓慢循环。
new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
mTextField.setText("done!");
}
}。start();
这是链接
https://developer.android.com/reference/android/os/CountDownTimer
答案 1 :(得分:0)
您可以尝试使用Thread
DelayedTask.java
glm.cdk6 <- glm(TRG ~ CDK6, data = df, family = binomial(link = 'logit'))
final <- glm(TRG ~ CDK6 + CXCL8 + IL6 + ISG15 + PTGS2 , data = df, family = binomial(link = 'logit'))
rocs <- list()
library(pROC)
rocs[["CDK6"]] <- roc(df$TRG, predict(glm.cdk6))
rocs[["final"]] <- roc(df$TRG, predict(final))
ggroc(rocs)
在所有图像都下载完毕后使用此功能
class DelayedTask extends Thread {
private Activity activity;
private int count;
private int sleepDelay;
private int totalDelay = 5000;
public DelayedTask(Activity activity, int count) {
this.activity = activity;
this.count = count;
this.sleepDelay = totalDelay / count;
}
@Override
public void run() {
for (int i = 0; i < count; i++) {
try {
final int j = i;
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
viewPager.setCurrentItem(j);
}
});
Thread.sleep(sleepDelay);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}