ImageView.Visible和ImageView.Gone不能正常工作

时间:2015-01-22 08:37:10

标签: android android-view

我已经创建了代码,当我点击假设A Image时,B Image应显示100毫秒然后关闭

我是通过Java Code

完成的
public void changeRightDrum() {
    System.out.println("RIGHT");
    imageViewB.setVisibility(View.VISIBLE);
    try {
        Thread.sleep(100);
    } catch (Exception e) {
        e.printStackTrace();
    }
    imageViewB.setVisibility(View.GONE);
    System.out.println("RIGHT DONE");
}

但它无效B图像未显示

任何人都可以帮助我实现这个目标

4 个答案:

答案 0 :(得分:8)

您使用sleep()阻止了UI线程,并且无法真正执行任何UI更新。

使用HandlerpostDelayed()来安排Runnable在延迟后运行,而不是睡觉。

答案 1 :(得分:2)

像这样使用postDelayed

public void changeRightDrum() {
    System.out.println("RIGHT");
    imageViewB.setVisibility(View.VISIBLE);
    imageViewB.postDelayed(new Runnable() {
      @Override
      public void run() {
        imageViewB.setVisibility(View.GONE);
        System.out.println("RIGHT DONE");
      }
    }, 100);
}

答案 2 :(得分:1)

实施@laalto说的话:

public void changeRightDrum() {
System.out.println("RIGHT");
imageViewB.setVisibility(View.VISIBLE);
Handler handler = new Handler();
       handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                   imageViewB.setVisibility(View.GONE);
                   System.out.println("RIGHT DONE"); 
                  }
           },200);
}

答案 3 :(得分:1)

我通过使用此

实现了目标
new AsyncTask<Void, Void, Void>() {

        @Override
        protected void onPreExecute() {
            imgPressedLeftTabla.setVisibility(View.VISIBLE);
            super.onPreExecute();
        }

        @Override
        protected void onPostExecute(Void result) {
            imgPressedLeftTabla.setVisibility(View.GONE);
            super.onPostExecute(result);
        }

        @Override
        protected Void doInBackground(Void... params) {
            try {
                Thread.sleep(50);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

    }.execute();