Android ImageView.Visible和ImageView.Gone不工作
我已经创建了这样的代码,当我点击一个图像时,B图像应该显示100毫秒,然后熄灭 我已经通过Java代码完成了这项工作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
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