我如何立即显示 ImageView
Posted
技术标签:
【中文标题】我如何立即显示 ImageView【英文标题】:How I make an ImageView show-up immediatlly 【发布时间】:2016-04-03 12:58:47 【问题描述】:public class MainActivity extends Activity
ImageView img;
MediaPlayer failure;
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bButton= (Button)findViewById(R.id.blueBtn);
img = (ImageView)findViewById(R.id.image);
img.setVisibility(View.VISIBLE);
failure= MediaPlayer.create(this,R.raw.failure_sound);
bButton.setOnClickListener(new View.OnClickListener()
public void onClick(View v)
img.setVisibility(View.VISIBLE);
try
Thread.sleep(10000);
catch (InterruptedException e)
e.printStackTrace();
failure.start();
);
这就是我的代码。 我只是想让它在我按下按钮时显示图像 然后等待 1000 毫秒,然后发出声音。 但是(!)不幸的是,当我按下该按钮时:该过程等待 1000 毫秒,然后发出声音并显示 img。
请帮忙!!!
【问题讨论】:
使用Handler
而不是Thread.sleep
如果我想显示图像,然后延迟整个程序,然后继续并发出声音怎么办。 (我当然会问,因为我有很多问题......)
可以请人在这里帮助我。我想要在不冻结我的 UI 的情况下产生与睡眠相同效果的东西。亨德勒不会让我的程序停止。我想在 for 循环中间停止程序,显示图片,然后停止一切(循环)。但处理程序不这样做。最好的毕业生
【参考方案1】:
替换您的 onClick 处理程序:
public void onClick(View v)
img.setVisibility(View.VISIBLE);
v.postDelayed(new Runnable()
public void run() failure.start();
,1000);
【讨论】:
如果我想显示图像,然后延迟整个程序,然后继续并发出声音怎么办。 (我当然会问,因为我有很多问题......) 你是什么意思 - 延迟整个程序?您想阻止用户与其交互,或者您想延迟某些代码执行? 我想在 for 循环的中间进行延迟,现在有了这个 postDelayed 循环继续计数。我希望每一次都停止 1000 毫秒,然后才能保持循环。非常感谢!!! 将循环分成两部分:延迟前和延迟后。将第一部分放在 v.postDelayed() 调用之前。将第二部分放在 failure.start() 调用之后。 不幸的是它没有帮助。循环继续! ohhhhhh 我坐在这个小时ssss :(【参考方案2】:使用Thread.sleep(10000);
会导致主线程冻结,因此在这段时间内无法更新 UI。
如果你想等待一定的时间来做某事,你可以使用Handler
代替,这样UI可以同时更新:
public void onClick(View v)
img.setVisibility(View.VISIBLE);
new Handler().postDelayed(new Runnable()
public void run()
failure.start();
, 1000);
【讨论】:
如果我想显示图像,然后延迟整个程序,然后继续并发出声音怎么办。 (我问当然是因为我有那种问题......) 可以请人在这里帮助我。我想要在不冻结我的 UI 的情况下产生与睡眠相同效果的东西。亨德勒不会让我的程序停止。我想在 for 循环中间停止程序,显示图片,然后停止一切(循环)。但处理程序不这样做。最好的毕业生【参考方案3】:您正在让您的 UI 线程进入睡眠状态,这会导致您的应用冻结并且图像不显示。 一个更好的方法是使用一个处理程序,它会在延迟后执行代码并且不会冻结你的 UI。
您的 clickListener 的快速调整是:
bButton.setOnClickListener(new View.OnClickListener()
public void onClick(View v)
img.setVisibility(View.VISIBLE);
new Handler().postDelayed(new Runnable()
@Override
public void run()
failure.start();
, 1000);
);
【讨论】:
如果我想显示图像,然后延迟整个程序,然后继续并发出声音怎么办。 (我问当然是因为我有那种问题......) 可以请人在这里帮助我。我想要在不冻结我的 UI 的情况下产生与睡眠相同效果的东西。亨德勒不会让我的程序停止。我想在 for 循环中间停止程序,显示图片,然后停止一切(循环)。但处理程序不这样做。最好的毕业生以上是关于我如何立即显示 ImageView的主要内容,如果未能解决你的问题,请参考以下文章