我有一个Android活动,我根据从我的在线数据库加载的图像向用户显示幻灯片。图像每10秒更改一次,定时器每1秒更新一次,显示当前图像显示的秒数。现在我想实现当用户按下ImageView(填充整个活动)时图片跳过并且下一张要显示的图片被加载到图像视图中的功能,这样用户就不必等待整整10秒,他可以看到下一张照片。这个问题是当前图片由我的for循环中的i
计数器指示。我尝试分配currphoto = i
然而这并不起作用,因为它需要将currphoto声明为final。我正在寻找有关如何以最佳方式实现此功能的建议。
public void slideshow(ArrayList<ImageDisplayer> a, final int currImage, final int offset) {
ImageView imageView = (ImageView) findViewById(R.id.picturedisplay);
int currphoto = 0;
final long DELAY = 300; // milliseconds
final long VIEW_TIME = 10000;
Timer timer = new Timer();
final TimerTask update_time = new TimerTask() {
@Override
public void run() {
SlideShow.this.runOnUiThread(new Runnable() {
@Override
public void run() {
TextView time_rem = (TextView) findViewById(R.id.time_rem);
int timeRem = Integer.parseInt(time_rem.getText().toString());
timeRem--;
time_rem.setText(Integer.toString(timeRem));
}});
}};
timer.scheduleAtFixedRate(
new TimerTask() {
int i = currImage;
int off = 0;
@Override
public void run() {
SlideShow.this.runOnUiThread(new Runnable() {
@Override
public void run() {
if (i < imageDisplayerArrayList.size()) {
TextView time_rem = (TextView) findViewById(R.id.time_rem);
time_rem.setText("10");
Bitmap myBitmap = ConvertToImage(imageDisplayerArrayList.get(i).getImage());
ImageView imageView = (ImageView) findViewById(R.id.picturedisplay);
imageView.setImageBitmap(myBitmap);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
Toast.makeText(getApplicationContext(),
Integer.toString(imageDisplayerArrayList.size()), Toast.LENGTH_LONG)
.show();
i++;
off = (int)(Math.rint(Math.ceil((double) i / 10) * 10));
if (i % 5 == 0 && i % 10 != 0) {
uploadImage2("2650225",Integer.toString(off),i);
}
}
else {
update_time.cancel();
}
}});
}},
DELAY,VIEW_TIME
);
timer.scheduleAtFixedRate(update_time, 0,1000);
答案 0 :(得分:0)
您可以按照以下三个步骤进行操作:
1.首先制作一个只能改变图像的功能。
2.设置可以每10秒更换一次的计时器。在计时器上调用第一个函数。
3.set onclick listener并调用第一个函数。
答案 1 :(得分:0)
我建议使用ViewFlipper
的ViewAnimatorViewFlipper将在已添加到其中的两个或多个视图之间设置动画。一次只能展示一个孩子。如果需要,可以定期在每个孩子之间自动翻转,这样你的图像幻灯片目的就可以解决了。
Android ViewFlipper支持自动翻转,可以使用startFlipping()和stopFlipping()方法进行控制。我们可以使用setFlipInterval(句点)设置自动翻转间隔。请注意,间隔时间以毫秒为单位。
请参阅Android ViewFlipper Example以实现图片幻灯片。