Use they Assets folder instead. Take a look on AssetManager docs.
El 17/07/2012 22:00, "Matt Schoen" <mtsch...@gmail.com> escribió:

> Unfortunately I've already done your last suggestion.  The images are
> pretty small already.  I'm still not convinced that the streaming would
> work.  For one thing, the flicker loops, and for another, the range of
> frames changes quite often.  For example:
>
> If the phone starts upright, we play images 90, 91, 92, 93, 94, 95, 90,
> 91...
>
> Then, if you til it, it'll be like 90, 91, 92, 80, 81, 82, 60, 61, 62, 40,
> 41, 120, 121, 140, 141...
>                                                         ^               ^
>               ^          ^            ^
>
> The carats signify where the accelerometer value has changed so that the
> "first" frame is different.  This happens quite frequently (to make for a
> smooth "bend") and is completely unpredictable.  As far as I can tell, we'd
> always get a hiccup when the accelerometer value changed.
>
> I'm really hoping that I can do what I was originally asking for.  It
> seems so simple to just force the loading of a different set of drawables.
>
> If I wanted to load the images some other way (not through the drawables
> folder) how could I do that?
>
> On Tuesday, July 17, 2012 12:48:48 PM UTC-4, Nobu Games 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?
>>>>>
>>>>
> On Tuesday, July 17, 2012 12:48:48 PM UTC-4, Nobu Games 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

Reply via email to