0

これは次の私のコードです。画像ビューでいくつかの iamges を動的に変更しています。public class LoadingScreen extends Activity{

public static Integer[] imageList={R.drawable.food_pics1,R.drawable.food_pics2,R.drawable.food_pics3,
    R.drawable.food_pics4,R.drawable.food_pics5,R.drawable.food_pics6,R.drawable.food_pics7,
    R.drawable.food_pics8,R.drawable.food_pics9};
Thread thread;
ImageView foodImageView;
final Handler myHandler=new Handler();
public int currentImageIndex=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.load_xml);
    foodImageView=(ImageView)findViewById(R.id.imageView_food);
    //      final int i=0;

    final Runnable runnable = new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            animateImages();
        }


    };

    final int delay=500;            
    final long period=1000;
    Timer timer=new Timer();

    timer.scheduleAtFixedRate(new TimerTask() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            myHandler.post(runnable);
        }
    }, delay, period);
}

private void animateImages() {
    // TODO Auto-generated method stub
        foodImageView.setImageResource(imageList[currentImageIndex%imageList.length]);
        currentImageIndex++;
        foodImageView.getAnimation();
}

タイマーを停止して、20 秒後にこのアクティビティを終了したいのですが、どうすればよいですか。

4

3 に答える 3

1

これを使ってみてください、

 View v = new View(this);
        v.postDelayed(new Runnable(){
            public void run() {
                // TODO Auto-generated method stub
                //cancel your animation and finish the Activity here.
                finish();
            }
         }, (long) 20000.0);
于 2012-04-09T11:01:02.633 に答える
0

クラスに TimerTask インスタンスを保存し、キャンセルを呼び出します。

Java のタイマーを使用しない場合に非常に役立つヒントを次に示します。特に UI タスクを実行する場合は、UI スレッドで同期を試みてください。例:

... onCreate() {
getUiThreadHandler().post(new Runnable(){
  if (canceled()) {
    return;
  }

  // Actual work
  ...

  // Invoke again after delay
  getUiThreadHandler().postDelayed(this, 500);
});

幸運を

于 2012-04-09T10:35:16.317 に答える
0

次のように言えます。

timer.cancel();
timer = null;
于 2012-04-09T10:23:56.783 に答える