我有n个位图在我的SD卡上(使用模拟器)编号如:" 1.jpg"," 2.jpg"," 3.jpg" ,...
我想快速连续地在我的ImageView中加载它们,来自" 1.jpg"到" xy.jpg",就像一段简短的视频。
但是,经过短暂的延迟后,它只显示保存在我的目录中的最后一个位图!
基本上,当我点击"重播"我的ImageView中的按钮:
public void replay(View view) {
new replayAsync().execute();
}
这个asynctask将执行:
class replayAsync extends AsyncTask<Void, Void, Void> {
File temp = null; // This will be the path of the last directory created
@Override
protected Void doInBackground(Void... params) {
int i;
// Searching for the last created directory for my replay,
// starting from Directory number 10 (newer, if it exists)
// to 0 (older)
for (i = 10; i > 0; i--)
{
temp = new File(Environment.getExternalStorageDirectory()
+ "/Android/data/"
+ getApplicationContext().getPackageName()
+ "/Files/"
+ i);
if (!temp.exists())
{
continue;
}
else {
System.out.println("last path created is: " + temp);
break;
}
}
runOnUiThread(new Runnable(){
@Override
public void run() {
for (int c = 0; c < 10; c++) {
String path = temp + File.separator + c + ".jpg";
Bitmap myBitmap = null;
try {
myBitmap = BitmapFactory.decodeFile(path);
imgView.setImageBitmap(myBitmap);
imgView.invalidate();
}
catch (Exception e){
System.out.println("Error!");
}
}
}
});
return null;
}
}
所以,我尝试过invalidate,postinvalidate,没有runOnUiThread,没有AsyncTask,但没有...
它可能是什么?
答案 0 :(得分:0)
由于您使用for循环从一个图像移动到另一个图像,即使图像发生变化,您也无法看到变化,因为它发生的速度非常快。想法是等待一段时间才能转到下一张图片。您可以使用计时器类在显示下一个图像之前提供一些延迟。