Создание анимации в Android - PullRequest
       0

Создание анимации в Android

1 голос
/ 09 февраля 2012

Пожалуйста, помогите, я новичок в разработке Android. Я просто хочу динамически создавать анимацию изображений, скажем, другими словами, например, я хочу создать 3 изображения и анимацию с ними, затем после некоторых условий должно стать 4 изображения, 5 изображений и так далее. Когда я создаю 3 изображения отдельно с 3 Runnables, то это работает нормально, но когда я создаю эти 3 Runnables с помощью динамического массива, то это просто ничего не делает. Вот код с 3 отдельно взятыми Runnables

private Runnable run1= new Runnable() {   
public void run() {
    if(t1)
    {
        LayoutParams params1=(LayoutParams) l1.getLayoutParams();
        params1.x=x1;
        params1.y=y1;
        l1.setLayoutParams(params1);
        x2=r.nextInt(720-80)+80;
        y2=r.nextInt(400-80)+80;

    TranslateAnimation ta1 = new TranslateAnimation(0, x2-x1, 0, y2-y1 );
    ta1.setDuration(800);
    ta1.setFillAfter(true);
    l1.startAnimation(ta1);
    x1=x2;
    y1=y2;

    handler.postDelayed(run1, 800);

    }
}

И то же самое для Run2 и Run3 Работает нормально, но следующие ничего не делают

for(j=0;j<c;j++)    
{
    run[j]=new Runnable()
    {
        public void run() {
            if(t[j])

            {

                params[j]=(LayoutParams) images[j].getLayoutParams();
                params[j].x=x1[j];
                params[j].y=y1[j];
                images[j].setLayoutParams(params[j]);

                x2[j]=r.nextInt(720-80)+80;
                y2[j]=r.nextInt(400-80)+80;

                ta[j] = new TranslateAnimation(0, x2[j]-x1[j], 0, y2[j]-y1[j] );
                ta[j].setDuration(200);
                ta[j].setFillAfter(true);
                images[j].startAnimation(ta[j]);
                x1[j]=x2[j];
                y1[j]=y2[j];

                handler.postDelayed(run[j], 200);   
            }
        }

  };
for(j=0;j<c;j++)    
{
    this.runOnUiThread(run[j]);
}

Как это исправить, я имею в виду, как создавать анимацию с динамическим количеством изображений.

1 Ответ

1 голос
/ 09 февраля 2012

Во-первых, вы должны проверить, становится ли ваш t [j] «истинным», или он всегда остается ложным (я думаю, вы забыли установить для t [j] значение true). Во-вторых, есть еще один хороший способ динамического создания анимации изображений. Вместо использования изображений в общем классе вы должны представлять каждое изображение как объект отдельного класса, который должен предоставлять 2 атрибута: имя изображения и собственный логический t для решения, должен ли этот объект анимироваться. Этот класс должен реализовывать Runnable. Затем вы можете динамически создавать массив объектов этого класса и для каждого объекта запускать анимацию. Я являюсь объективным разработчиком C, поэтому вот код, который вы можете легко перенести на android.

class Single implement Runnable
{
UIImageView* image;
bool t;
//method run{

 //here you should create animation code

}
class common
{
 static int c=3;
 Single[] arrayOfObj=new Single[3];
 //method onCreate
{
//create objects of arrayOfObj with images that you want and then call run method for    each object 
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...