Задать вопрос
@newdancer

Как реализовать запуск анимации в другом потоке с задержкой выполнения кода основного потока???

Как реализовать запуск анимации в другом потоке с задержкой выполнения кода основного потока???
Реализуется авто перемещение карт(imageview) в стопку. Необходимо посредством анимации перемещать объект раз в секунду в стопку задерживая при этом код основного потока.
  • Вопрос задан
  • 503 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@vaseel1ch
При перемещении объекта сделать sleep() основного потока на указанное время, или поместить выполнение потока в очередь
Ответ написан
@NullxWeigth
А зачем еще отдельный поток, если главные все равно будет спать? Делайте все в главном потоке и усе, или я что-то не понял?
Ответ написан
@newdancer Автор вопроса
запустил таким образом: в основном классе прописал
TestJoinMethod1 t1;
t1=new TestJoinMethod1();

// вызов
t1.baseitem(fn, animX, animY, kart);
 t1.start();  
 try{  
t1.join();  
}catch(Exception e){System.out.println(e);}


новый класс прописал так
import android.view.View;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;

public class TestJoinMethod1 extends Thread {
	
	Klondike klondike;
	int fn;
	int animX, animY;
	ImageView kart[] = new ImageView[52];
	
	void baseitem(int fn2, int animX2, int animY2, ImageView[] karts) 
	{
		fn=fn2;
		animX=animX2;
		animY=animY2;
		for (int i = 0; i < karts.length; i++) 
		{
			kart[i]=karts[i];
		}
	}
	
   	 public void run(){  
   		 System.out.println("running...");  
   	   try{  
   	    Thread.sleep(1000);  
   	   }catch(Exception e){System.out.println(e);}
		kart[fn].setVisibility(View.INVISIBLE);
		TranslateAnimation anim0 = new TranslateAnimation(kart[fn].getX(), 0, kart[fn].getY(), 0);
		anim0.setDuration(1000);
		anim0.setFillAfter(true);
		kart[fn].bringToFront();
	    kart[fn].setX(animX);
	    kart[fn].setY(animY);
	    kart[fn].startAnimation(anim0);
   	  }  
}

в итоге приложение вывалилось с ошибкой
java.lang.IllegalThreadStateException: Thread already started
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы