получить ресурс с сервера для анимации

1

Я разработал приложение с анимацией Frame by Frame. Я получаю ресурсы из доступной папки. Так что размер моего апка огромен. Теперь я хотел бы получить ресурсы с сервера, но я не могу придумать эту идею. я поставил мой код здесь

main.xml ::

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView android:id="@+id/simple_anim"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_centerHorizontal="true"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World, XMLAnimation"
/>
<Button android:text="Button" 
android:id="@+id/button1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"></Button>
</LinearLayout> 

frame_animation_girl.xml ::

<animation-list xmlns:android=
 "http://schemas.android.com/apk/res/android"
android:oneshot="false">
       <item android:drawable="@drawable/girl0001" android:duration="20" />
       <item android:drawable="@drawable/girl0002" android:duration="20" />
       <item android:drawable="@drawable/girl0003" android:duration="20" />
       <item android:drawable="@drawable/girl0004" android:duration="20" />
       <item android:drawable="@drawable/girl0005" android:duration="20" />
       <item android:drawable="@drawable/girl0006" android:duration="20" />
  </animation-list>

Файл Java ::

        ImageView img = (ImageView) findViewById(R.id.simple_anim);
        img.setBackgroundResource(R.drawable.frame_animation_girl);

        MyAnimationRoutine mar = new MyAnimationRoutine();
        MyAnimationRoutine2 mar2 = new MyAnimationRoutine2();

        Timer t = new Timer(false);
        t.schedule(mar, 100);
        Timer t2 = new Timer(false);
        t2.schedule(mar2, 5000);
        Buttona = (Button) findViewById(R.id.button1);
        final Intent animationIntent = new Intent(this, TranningIntent.class);
        Buttona.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                startActivity(animationIntent);
                finish();
            }
        });
    }

    class MyAnimationRoutine extends TimerTask {
        MyAnimationRoutine() {
        }

        public void run() {
            ImageView img = (ImageView) findViewById(R.id.simple_anim);
            // Get the background, which has been compiled to an
            // AnimationDrawable object.
            AnimationDrawable frameAnimation = (AnimationDrawable) img
                    .getBackground();

            // Start the animation (looped playback by default).
            frameAnimation.start();
        }
    }

    class MyAnimationRoutine2 extends TimerTask {
        MyAnimationRoutine2() {
        }

        public void run() {
            ImageView img = (ImageView) findViewById(R.id.simple_anim);
            // Get the background, which has been compiled to an
            // AnimationDrawable object.
            AnimationDrawable frameAnimation = (AnimationDrawable) img
                    .getBackground();

            // stop the animation (looped playback by default).
            /* frameAnimation.stop(); */
        }
    }
}
Теги:

2 ответа

1
Лучший ответ

Я думаю, что это действительно зависит от того, что вы пытаетесь сделать, и каковы ваши анимации. В некоторых более простых анимациях (например, вращениях) вы можете уйти с анимацией одного выталкиваемого, что потенциально позволяет вам хранить меньше активов. Если вы имеете дело с действительно сложной анимацией и потенциально многими активами, вы всегда можете вернуть данные с вашего сервера, которые могут быть интерпретированы логикой клиента в анимации программным способом (а не через xml).

Также обсуждается использование XML файлов во время выполнения в этом потоке: загрузка и замена файлов ресурсов Android

0

я решил это путем ::

ImageView img = (ImageView) findViewById(R.id.simple_anim);
        animation = new AnimationDrawable();

           try {
               for(int i=0;i<54;i++)
               {    
                xyz("girl000",i);
               }        
           animation.setOneShot(false);
           } catch (Exception e) {
            }
           img.setBackgroundDrawable(animation);
           img.post(new Starter());

    }


    public void xyz(String str,int x)
    {
        try {
            Bitmap bitmap = BitmapFactory.decodeStream((InputStream) new URL(
            "http://sdfsdffff/MRESC/images/test/girl/"+"girl000"+x+".png")
            .getContent());
            Drawable frame =new BitmapDrawable(bitmap);
            animation.addFrame(frame, 50);

        } catch (Exception e) {

        }

    }
    class Starter implements Runnable {

        public void run() {
            animation.start();        
        }


    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню