Sleep Inside onItemClick



我想在OnItemClick中的两件事之间有一些延迟,但实际上什么都没发生。如果我运行它,然后点击,只要设置了睡眠,一切都会停止,然后它会同时更改图片。我想更改第一张图片。然后睡觉,然后换另一个。

 gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
           // clicks=0;
            int row_no = position / 3;
            int col_no = position % 3;
            if(clicks==0)
            {
                ((ImageView) gv.getChildAt(position)).setImageResource(R.drawable.kor);
                matrix[row_no][col_no]=1;
               // clicks++;
            }
           if(gepLephet())
            {
                try {
                    Thread.sleep(400);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                finally{
                    int posAi=gep();
                    ((ImageView) gv.getChildAt(posAi)).setImageResource(R.drawable.iksz);
                    matrix[posAi/3][posAi%3]=2;
                }
               // Toast.makeText(getApplicationContext(),"Random: "+posAi, Toast.LENGTH_SHORT).show();
            }
           /* else if(clicks==1)
            {
                ((ImageView) gv.getChildAt(position)).setImageResource(R.drawable.iksz);
                matrix[row_no][col_no]=2;
                clicks--;
            }*/
            // Toast.makeText(getApplicationContext(), "position: " + position +"Random: "+posAi, Toast.LENGTH_SHORT).show();
          // if(matrix[0][0]==matrix[0][1]&&matrix[0][1]==matrix[0][2]){text.setText("WIN");}
            if(isWinO())
            {
                text.setText("O WIN");
            }
            if(isWinX())
            {
                text.setText("X WIN");
            }

        }
        ;
    });

onItemClick方法在UI线程内运行,因此当您调用Thread.sleep时,UI线程进入睡眠状态,屏幕上没有任何变化。永远不要停止UI线程,它会被用户视为滞后或bug。要在延迟后更改UI,可以使用ViewpostDelayed方法。样品:

View view;
view.postDelayed(new Runnable() {
    @Override public void run() {
        //code here will be run after 400ms delay
    }
}, 400);

相关内容

  • 没有找到相关文章

最新更新