ImageView.Visible 和 ImageView.Gone 不工作 android

ImageView.Visible and ImageView.Gone is not working android

我创建了代码,当我点击假设 A 图像时,B 图像应该显示 100 毫秒然后熄灭

我已经通过 Java 代码

做到了
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 图像不显示

谁能帮我实现这个目标

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

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

像这样使用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);
}

实现@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);
}

我用这个实现了

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();