Android ImageView.Visible和ImageView.Gone不工作

Android ImageView.Visible和ImageView.Gone不工作,android,android-view,Android,Android View,我已经创建了这样的代码,当我点击一个图像时,B图像应该显示100毫秒,然后熄灭 我已经通过Java代码完成了这项工作 public void changeRightDrum() { System.out.println("RIGHT"); imageViewB.setVisibility(View.VISIBLE); try { Thread.sleep(100); } catch (Exception e) { e.printSt

我已经创建了这样的代码,当我点击一个图像时,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更新都无法真正执行


不要休眠,而是使用
处理程序
postDelayed()
来计划
Runnable
在延迟后运行。

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


不要睡觉,使用
处理程序
postDelayed()
来安排
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);
}

像这样使用
postdayed

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

落实@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();
newasynctask(){
@凌驾
受保护的void onPreExecute(){
imgPressedLeftTabla.setVisibility(View.VISIBLE);
super.onPreExecute();
}
@凌驾
受保护的void onPostExecute(void结果){
imgPressedLeftTabla.setVisibility(View.GONE);
super.onPostExecute(结果);
}
@凌驾
受保护的Void doInBackground(Void…参数){
试一试{
睡眠(50);
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}
}.execute();

我通过使用此

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();
newasynctask(){
@凌驾
受保护的void onPreExecute(){
imgPressedLeftTabla.setVisibility(View.VISIBLE);
super.onPreExecute();
}
@凌驾
受保护的void onPostExecute(void结果){
imgPressedLeftTabla.setVisibility(View.GONE);
super.onPostExecute(结果);
}
@凌驾
受保护的Void doInBackground(Void…参数){
试一试{
睡眠(50);
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}
}.execute();

非常感谢我得到了@LaaltoThanks很多我得到了@Laalto