ImageView不刷新

时间:2014-09-12 13:11:50

标签: android bitmap imageview

我有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,但没有...

它可能是什么?

1 个答案:

答案 0 :(得分:0)

由于您使用for循环从一个图像移动到另一个图像,即使图像发生变化,您也无法看到变化,因为它发生的速度非常快。想法是等待一段时间才能转到下一张图片。您可以使用计时器类在显示下一个图像之前提供一些延迟。