Pregunta

I want to position the image at different location on screen based on the time parameter. But using this code my image is static -

package com.example.blahblah;

import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.*;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;

public class Starts extends Activity{    
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.starts);
    ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
    exec.scheduleAtFixedRate(new Runnable() {
      int i=10;     
      final ImageView im=(ImageView)findViewById(R.id.imageView1);
      public void run() {
        im.setX(i);
        im.setY(i);
        i=i+100;
      }
    }, 0, 4, TimeUnit.SECONDS);
  }
}

What did I miss?

¿Fue útil?

Solución

Every interval restarts with i=10. You could use something like this instead.

private static class MyRunnable implements Runnable {
  int i=10;     
  final ImageView im=(ImageView)findViewById(R.id.imageView1);
  public void run() {
    im.setX(i);
    im.setY(i);
    i=i+100;
  }
}

// then in onCreate
Runnable r = new MyRunnable();
exec.scheduleAtFixedRate(r, 0, 4, TimeUnit.SECONDS);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top