Maybe I'm wrong, but I think he pointed that the frame sequence depends on user input, so he cannot preload a series of frames because each next frame varies with user interaction on previous one. On Jul 17, 2012 6:51 PM, "Nobu Games" <dev.nobu.ga...@gmail.com> wrote:
> You still could go with the "streaming" idea. At any given time you would > have a fixed size amount of frames in memory (let's say 15 bitmaps, just as > an example). As the animation progresses you need to load the next batch > and discard older ones. In order to prevent loading hickups you could > proceed as follows: > > - Your "window" of animation bitmaps has 15 items. > - As the animation counter reaches item #6 you would recycle the last > 5 ones and load the next 5 ones that come after item #15 > - Loading needs to be done in a background thread (AsyncTask) > > Of course you'd need to add special logic for your case, like allowing to > loop a certain amount of animation frames and starting playback from any > point of the sequence and so on. But this could be done with a fixed size > window of frames. > I think that's the only sane way to do that based on that huge bitmap > sequence and you could even adjust the window size according to the > available memory. Play around with these numbers in order to get the best > result for your animation. > > By the way, I would just animate the flame itself and use a single, static > bitmap for the lighter. That way you could use a low-resolution bitmap > sequence of the flame and scale it up on devices with less memory. Lights > and shadows could be faked in real time, too, by drawing overlays on the > view's canvas. > > Maybe you can get away with that solution and don't need to implement a > streaming technique. > > > On Tuesday, July 17, 2012 9:28:59 AM UTC-5, Matt Schoen wrote: >> >> Hey, thanks for the reply. >> >> I guess I should have explained more clearly. This is a "lighter" type >> animation, which responds to accelerometer input. The flame flickers >> (plays from a start frame on a short loop) and when you tilt the phone, the >> start frame is "swept" through an animation of the flame bending from one >> side to another. >> >> Because of this, I'm not sure I could really "stream" anything since I >> might need any one frame of the animation at any point. It just occurred >> to me that maybe I could store only half the frames and flip them in >> software (currently the "flip" is just rendered into the animation). >> >> This is why I'm just using a big image sequence (about 150 frames) as >> drawables. Any advice? >> >> On Saturday, July 14, 2012 12:26:13 PM UTC-4, Nobu Games wrote: >>> >>> How many items are in your animation list? If it is really, really huge >>> I'd add some "streaming" logic to your animation player, so older frames >>> get recycled while future frames are loaded in the background. That way you >>> have absolute control over a moving window of frames and you could size >>> that window according to the available amount of free memory. You wouldn't >>> risk OOM crashes on any device with that technique. >>> >>> Alternatively you could create a video based on your frames and play >>> that one back instead. >>> >>> >>> On Friday, July 13, 2012 10:54:46 PM UTC-5, Matt Schoen wrote: >>>> >>>> Hey there, >>>> >>>> I've tried to find info on this, but it seems like a pretty esoteric >>>> case. I'll admit that I'm probably completely off-base to start, but the >>>> app is 99% done, so I'd rather not change my implementation from it's >>>> current state. I have an animation that I'm using a big list of drawables >>>> to display, and while it works fine on phones with enough RAM, I get "VM >>>> out of memory" crashes on devices with basically 512 MB RAM and below. >>>> >>>> I've found the getMemoryClass() function, which seems to report "32" >>>> for a device with 512MB. I tried overriding the density value, which >>>> successfully avoided the crash, but also resized my whole view! All I want >>>> is to be able to programmatically tell the view framework to default to the >>>> low-res images. Is this possible? >>>> >>> -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to android-developers@googlegroups.com > To unsubscribe from this group, send email to > android-developers+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en