Generally, anything with more than one Surface view is apt to break.
I've seen this issue with camera previews and media players in the
same layout

I don't think it was architected to share the render buffer.


On Jun 21, 2:03 am, AndroidDev1 <lior.naish...@gmail.com> wrote:
> Hi,
> I am using a SurfaceView and a Thread to draw animated gif on a canvas
> and its working perfectly.
> Once I try to draw my second animated gif, I'm getting 2 animated
> gifs
> with the last animinated gif aniation.
> like my second Movie.DecodeStream(is) override the first Movie.
>
> The result of the code below is  2 animated gif with movie2 animation
> Please advise what can be the problem.
> Thanks in advance
>
> code:
>
> Thread constructor:
> InputStream is
> is = mRes.openRawResource(R.drawable.animated_gif1);
> Movie movie1 = Movie.decodeStream(is);
> try {
>          is.close();
>       } catch (java.io.IOException e) {
>                      /*  do nothing.
>                          If the exception happened on open, moov will
> be null.
>                          If it happened on close, moov is still valid.
>                   */
>       }
>
> is = mRes.openRawResource(R.drawable.animated_gif2);
> Movie movie2 = Movie.decodeStream(is);
> try {
>          is.close();
>       } catch (java.io.IOException e) {
>                      /*  do nothing.
>                          If the exception happened on open, moov will
> be null.
>                          If it happened on close, moov is still valid.
>                   */
>       }
> ....
> ....
> ....
>
> doDraw(Canvas c) {
> ....
>
> long now = android.os.SystemClock.uptimeMillis();
>                     if (mMovieStart == 0) {   // first time
>                         mMovieStart = now;
>                     }
>
> int dur = movie1.duration();
> if (dur == 0)
>       dur = 1000;
>
> int relTime = (int)((now - mMovieStart) % dur);
> movie1.setTime(relTime);
> movie1.draw(canvas, 100, 100);
>
> int dur = movie2.duration();
> if (dur == 0)
>       dur = 1000;
>
> relTime = (int)((now - mMovieStart) % dur);
> movie2.setTime(relTime);
> movie2.draw(canvas, 100, 100);

-- 
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