2014-11-01 36 views
0

即时新的在蚀和制作应用程序,我想创建无限循环与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 }

回答

-1

你需要让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); 
+0

当我像你那样运行它时,图片开启一次。我如何做到无限? – 2014-11-01 11:54:40

+0

直到第3张照片才会运行吗?如果是,那么我认为你只需要添加while(true)并将整个代码放在里面。请看我编辑的答案。 – 2014-11-01 11:57:56

+0

顺便说一句,我认为你的主要问题:“如何正确设置延迟”已被回答:) – 2014-11-01 11:59:20

0

如果你设置视图无形:

dk2.setVisibility(View.INVISIBLE); 

然后检查它是否可见:

if(dk2.getVisibility()==View.VISIBLE) 

它将始终评估为假,将永远不会被执行。

我会考虑不同的方法,如:

此外,您还可以使用设置在布局的默认可见性:

android:visibility="visible|invisible|gone"