如何在Android(Eclipse)中正确设置延迟
问题描述:
即时新的在蚀和制作应用程序,我想创建无限循环与3张图片,每张图片将变得可见或不可见轮到他。 但是当我运行的应用程序只有第二张图片变得可见一次,就是这样,然后停止并注意到发生。 我需要做些什么才能使其工作?如何在Android(Eclipse)中正确设置延迟
protected void onCreate(Bundle savedInstanceState) {
\t \t super.onCreate(savedInstanceState);
\t \t setContentView(R.layout.activity_main);
\t \t \t
\t \t dk1 =(ImageView) findViewById(R.id.dkmain1);
\t \t dk2 =(ImageView) findViewById(R.id.dkmain2);
\t \t dk3 =(ImageView) findViewById(R.id.dkmain3);
\t \t dk1.setVisibility(View.VISIBLE);
\t dk2.setVisibility(View.INVISIBLE);
\t dk3.setVisibility(View.INVISIBLE); \t \t
\t \t \t
\t \t \t if(dk1.getVisibility()==View.VISIBLE)
\t \t \t { \t \t \t
\t \t \t \t new Handler().postDelayed(new Runnable() {
\t \t \t @Override
\t \t \t public void run() { \t \t
\t \t \t dk1.setVisibility(View.INVISIBLE);
\t \t \t \t dk2.setVisibility(View.VISIBLE);
\t \t \t \t dk3.setVisibility(View.INVISIBLE); \t \t
}
}, 2000); \t \t \t \t
\t \t \t }
\t \t \t if(dk2.getVisibility()==View.VISIBLE)
\t \t \t { \t
\t \t \t new Handler().postDelayed(new Runnable() {
\t \t @Override
\t \t public void run() { \t \t \t
\t \t dk1.setVisibility(View.INVISIBLE);
\t \t \t \t \t dk2.setVisibility(View.INVISIBLE);
\t \t \t \t \t dk3.setVisibility(View.VISIBLE); \t \t \t \t \t \t
\t \t }
\t \t }, 2000);
\t \t \t }
\t \t \t if(dk3.getVisibility()==View.VISIBLE)
\t \t \t { \t
\t \t \t new Handler().postDelayed(new Runnable() {
\t \t @Override
\t \t public void run() { \t \t \t
\t \t dk1.setVisibility(View.VISIBLE);
\t \t \t \t \t dk2.setVisibility(View.INVISIBLE);
\t \t \t \t \t dk3.setVisibility(View.INVISIBLE); \t \t \t \t \t \t \t
\t \t }
\t \t }, 3000); \t \t \t
\t \t \t }
答
你需要让Handlers
嵌套,以确保他们运行一个接一个:
if(dk1.getVisibility()==View.VISIBLE)
{
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
dk1.setVisibility(View.INVISIBLE);
dk2.setVisibility(View.VISIBLE);
dk3.setVisibility(View.INVISIBLE);
//put your 2nd if here, and 3rd if INSIDE your 2nd if
if(dk2.getVisibility()==View.VISIBLE)
//rest of the 2nd if code, and out the 3rd if here
}
}, 2000);
答
如果你设置视图无形:
dk2.setVisibility(View.INVISIBLE);
然后检查它是否可见:
if(dk2.getVisibility()==View.VISIBLE)
它将始终评估为假,将永远不会被执行。
我会考虑不同的方法,如:
- 定时器 - http://developer.android.com/reference/java/util/Timer.html
- CountDownTimer - http://developer.android.com/reference/android/os/CountDownTimer.html
此外,您还可以使用设置在布局的默认可见性:
android:visibility="visible|invisible|gone"
当我像你那样运行它时,图片开启一次。我如何做到无限? – 2014-11-01 11:54:40
直到第3张照片才会运行吗?如果是,那么我认为你只需要添加while(true)并将整个代码放在里面。请看我编辑的答案。 – 2014-11-01 11:57:56
顺便说一句,我认为你的主要问题:“如何正确设置延迟”已被回答:) – 2014-11-01 11:59:20