get resource from server for animation
I have developed an app which has Frame by Frame animation. I am getting resources from drawable folder. So the size of my apk is huge. Now I would like to get resources from server, but I am unable to come up with an idea to do this. i have put my code over here
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_conten开发者_Python百科t"></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 file ::
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(); */
}
}
}
I think this really depends on what you're trying to do, and what your animations are. Some simpler animations (e.g. rotations) you could get away with animating a single drawable, potentially allowing you to store fewer assets. If you are dealing with really complex animations and potentially many assets, you could always return data from your server that can be interpreted by your client logic into animations programmatically (not via xml).
There is also some discussion of using XML files at runtime in this thread: Download and replace Android resource files
i have solve this by ::
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();
}
}
精彩评论