在循环中重新绘制gridView

时间:2016-01-02 03:48:18

标签: java

我有1 gridview .. 在这里我的代码:

 for (int i = path.size() - 1; i >= 0; i--) {
       // View_score.setAlpha(0);
        final int[] key = {1};
        System.out.println("" + i + ": " + path.get(i));
        wall.get(path.get(i)).setiWall(-8);
        Thread closeActivity = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(1000);
                    System.out.println("aa");
                    key[0] =0;
                    // gv.callOnClick();
                    // Do some stuff
                } catch (Exception e) {
                    e.getLocalizedMessage();
                }
            }
        });
        closeActivity.start();
        while (key[0]==1){
        }
        closeActivity.interrupt();
        adapter_playing.notifyDataSetChanged();
        //gv.invalidateViews();
        gv.setAdapter(adapter_playing);
    }

// 在gridview之后,wall.get(path.get(i)).setiWall(-8);会发生变化 和sleep 0.1s。 我希望在睡眠gridview之后重新绘制我的问题:直到循环结束我的gridview开始重绘。

enter image description here

谢谢大家。

实际上,当我的球像这个游戏一样移动时,我正在创建Animationenter link description here 因此,每个循环我更改项目gridviewsleep中的1个图片,目的是创建Animation但不是。 gridview只是在结束循环时重新绘制。像:

我想:

   1.when `start` : On `gridview` will [][][][]
    2.And after 0.1s  : On `gridview` will [.][][][]
    3.after 0.1s : On `gridview` will [.][.][][]
    4.after 0.1s : On `gridview` will [.][.][.][]
    5.after 0.1s  end loop : On `gridview` will [.][.][.][.]

但现在:

1.when `start` : On `gridview` will [][][][]
2.And after 0.1s  : On `gridview` will [][][][]
3.after 0.1s : On `gridview` will [][][][]
4.after 0.1s : On `gridview` will [][][][]
5.after 0.1s  end loop : On `gridview` will [.][.][.][.]

1 个答案:

答案 0 :(得分:0)

删除closeActivity线程。这个线程可能正在休眠但你的函数存在于一个单独的线程上,因此睡眠不会停止你想要的代码。

for (int i = path.size() - 1; i >= 0; i--) {
   // View_score.setAlpha(0);
    final int[] key = {1};
    System.out.println("" + i + ": " + path.get(i));
    wall.get(path.get(i)).setiWall(-8);
            try {
                Thread.sleep(1000);
                System.out.println("aa");
                key[0] =0;
                // gv.callOnClick();
                // Do some stuff
            } catch (Exception e) {
                e.getLocalizedMessage();
            }
    adapter_playing.notifyDataSetChanged();
    //gv.invalidateViews();
    gv.setAdapter(adapter_playing);
}

这可能会也可能不会解决您的问题。由于您的问题不明确,我不完全理解您的问题是什么。基本上,如果删除你创建的新线程,并在活动线程中调用sleep函数,它将在设置key [0] = 0之前等待