2

我有一个带有 ImageView 数组的 TableLayout,然后当我单击 menuInflater 时,它会出现五秒钟,然后隐藏并开始倒计时。

public boolean onOptionsItemSelected(MenuItem item) {

super.onOptionsItemSelected(item);

switch (item.getItemId()){

case R.id.txt1:
    handler = new Handler (this);
                Worker w = new Worker (handler);
               Thread t = new Thread (w);
               t.start();
     return true;

  protected int [] imgIds = {
    R.id.img_1,R.id.img_2,R.id.img_3,R.id.img_4,R.id.img_5,R.id.img_6,
    R.id.img_7,R.id.img_8,R.id.img_9,R.id.img_10,R.id.img_11,R.id.img_12,
   };

public class Worker implements Runnable{

private Handler h;

public Worker (Handler h)
{
this.h = h;
}

@Override
public void run() {

for(int i=0; i<10; i++)
{
    imgIds.setsetVisibility(View.INVISIBLE)

    try{
        Thread.sleep(1000);
    }catch (InterruptedException e){
        e.printStackTrace();
    }
}
h.postDelayed(Worker,1000);
 }   
 }

然后 ImageView 隐藏并启动游戏。

这段代码是错误的,所以如果有人可以帮助我。

4

2 回答 2

6

帧动画将为您提供帮助

以下片段将指导您。

package com.org.sampleproject;

import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        AnimationDrawable animation = new AnimationDrawable();
        animation.addFrame(getResources().getDrawable(R.drawable.img1), 1000); //1 Sec
        animation.addFrame(getResources().getDrawable(R.drawable.img2), 1000); //1 Sec 
        animation.addFrame(getResources().getDrawable(R.drawable.img3), 1000); //1 Sec 
        animation.addFrame(getResources().getDrawable(R.drawable.img4), 1000); //1 Sec
        animation.addFrame(getResources().getDrawable(R.drawable.img5), 1000); //1 Sec
        animation.setOneShot(true);

        final ImageView imageAnim = (ImageView) findViewById(R.id.image);
        imageAnim.setBackgroundDrawable(animation);

        animation.start();

        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                imageAnim.setVisibility(View.INVISIBLE);

                //Perform Your Task Here 

            }
        }, animation.getNumberOfFrames() * 1000);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}
于 2012-07-05T04:55:38.793 回答
0

也许您可以使用 CountDownTimer :

http://developer.android.com/reference/android/os/CountDownTimer.html

protected int [] imgIds = {
R.drawable.img_1,R.drawable.img_2,...
};


new CountDownTimer(12000, 1000) {
    public void onTick(long millisUntilFinished) {
       img.setImageResource(R.drawable.my_image);
    }
于 2012-07-05T18:51:35.307 回答