Also, the entire animation loop is almost instantly, the problem comes
from the Handler.postDelayed() not calling on time, no matter what I
set the desired FPS at, I can't get above 6 FPS, and I no longer think
it has anything to do my drawing code but maybe the way something else
is handled. I stripped down google's example livewallpaper, so I don't
know if it's lacking any optimizations or anything.

On Mar 22, 8:28 pm, Jeffrey <jeffisagen...@gmail.com> wrote:
> I only have one image rendered (the background image) and I get the
> exact same results from canvas.translate() vs .drawbitmap.  The
> problem seems to be either the time it takes for it to draw the
> bitmap, or the time it takes to run through the sin/cos formulas for
> the placement. The image is only a little larger than my phone's
> display (800 X 480) but I get the same results when drawing a 50x50px
> image.
>
> This is my animation loop:
>
>                 int Speed = 50;
>                 double speedScale = (float) ((0.001*2*Math.PI)/Speed);
>                 double Dist = SystemClock.elapsedRealtime() * speedScale;
>
>                 NewX = (int) (OffsetX + Math.sin(Dist)*19);
>                 NewY = (int) (OffsetY + Math.cos(Dist)*19);
>
>             c.drawBitmap(mBackground, NewX + OffsetX, NewY + OffsetY,
> null);
>
> On Mar 21, 10:28 pm, Peter Webb <r.peter.w...@gmail.com> wrote:
>
>
>
>
>
>
>
> > I don't think OpenGL will help.
>
> > I use canvas.translate and canvas.rotate extensively in my wallpaper,
> > which runs very smoothly. AFAIK these commands just set mostly
> > hardware flags for where to draw, and appear to execute
> > instantaneously.
>
> > You haven't posted any code, but I would make a bet on why it is
> > running at 3fps.
>
> > You are displaying images. I bet you do a jpeg rendering every time
> > through your animation loop, and this is what is killing your
> > performance.
>
> > Draw the image to a bitmap, only once at the start (when a new image
> > is first to be displayed). Persist it for the liefetime of the
> > animation loop. Only do another jpeg rendering when you have a new
> > image to display.
>
> > In your animation loop:
>
> > Translate the canvas
> > Draw the bitmap
> > Translate the canvas back
>
> > If you have checked and you are *not* doing jpeg rendering in your
> > animation loop then you should find out what line is causing your 300
> > mS delay (shouldn't be too hard!) and fix that.
>
> > Peter Webb
>
> > On Mar 22, 7:58 am, Jeffrey <jeffisagen...@gmail.com> wrote:
>
> > > I am not getting any speed improvements over just changing the top/
> > > left coordinates of the .drawbitmap() command. I'm going to look into
> > > using OpenGL as I think part of my problem is the (relatively) low
> > > resolution makes even fluid movement seem choppy when it's moving by 1
> > > pixel increments.
>
> > > On Mar 20, 11:35 pm, Peter Webb <r.peter.w...@gmail.com> wrote:
>
> > > > Call canvas.translate(-x), draw, then call canvas.translate(x)
>
> > > > You are moving the location on the canvas underneath where you draw,
> > > > after you have drawn whatever you need to move the canvas back.
>
> > > > On Mar 21, 8:47 am, Jeffrey <jeffisagen...@gmail.com> wrote:
>
> > > > > Is there a way around having to call canvas.drawbitmap() every time?
> > > > > And if I call canvas.translate() after drawing the image doesn't move,
> > > > > it instead moves everything that would draw *after* the call to
> > > > > canvas.translate().
>
> > > > > Thank you for your help so far, and I'm hoping you have just a little
> > > > > bit left in you :)
>
> > > > > On Mar 20, 9:12 am, Riyad Kalla <rka...@gmail.com> wrote:
>
> > > > > > Jeffrey,
>
> > > > > > To what Peter said, mobile devices are very fill-rate-limited (at
> > > > > > least these current gen of phones) so depending on how you are
> > > > > > repainting that image over and over and over again to the Canvas, 
> > > > > > that
> > > > > > could explain the speed issue.
>
> > > > > > If you tried a tiny little 16x16 icon and it went much faster with 
> > > > > > the
> > > > > > same code, then I think you've found your culprit.
>
> > > > > > Regardless, Peter's approach sounds like the right way; upload image
> > > > > > data to the GPU one, then just move your "view" of it around in a
> > > > > > circle, panning across the image.
>
> > > > > > On Mar 19, 3:07 pm, Jeffrey <jeffisagen...@gmail.com> wrote:
>
> > > > > > > I'm trying to make a simple (or so I thought) live wallpaper that
> > > > > > > takes an image and moves it slowly in a circular motion, to make 
> > > > > > > the
> > > > > > > picture seem less static and more like looking out a window. I 
> > > > > > > took
> > > > > > > the live wallpaper tutorial from the SDK and stripped it down to 
> > > > > > > the
> > > > > > > bare bones so I could add to it. But the issue is that no matter 
> > > > > > > what
> > > > > > > size the image I'm moving, or what format (drawable or bitmap), 
> > > > > > > it is
> > > > > > > only getting about 3 fps.
>
> > > > > > > I don't know what to do to make this run faster, I have very 
> > > > > > > limited
> > > > > > > programming knowledge so I don't know if I'm missing something 
> > > > > > > stupid.
>
> > > > > > > Also, this is the code I'm using to calculate the circular 
> > > > > > > movement:
>
> > > > > > > int NewX = (int) (OffsetX + Math.sin(Dist)*19);
> > > > > > > int NewY = (int) (OffsetY + Math.cos(Dist)*19);
>
> > > > > > > where Dist is the speed it's moving and 19 is the radius of the
> > > > > > > circle.
>
> > > > > > > Is there an easier way? I looked into Tween animation but I don't 
> > > > > > > know
> > > > > > > how I would implement my circle code into it.- Hide quoted text -
>
> > > > > - Show quoted text -- Hide quoted text -
>
> > > - Show quoted text -

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