Since I did not find a way to rotate the canvas and always display the
drawing I'm calculating the position of the rotated points myself now.
For this I found the following information really helpful:

http://stackoverflow.com/questions/786472/rotate-a-point-by-an-angle

Axel

On 7 Mrz., 10:55, axel <[email protected]> wrote:
> I have create a subclass of View and overwritten onDraw() - see some
> test code below.
> It draws a line consisting of some points. Before the line is drawn
> the canvas is rotated and restore after the drawing.
> The angle by which the canvas is rotated increases by 5 degrees every
> time onDraw() is called.
> The view is invalidated about once a second causing the view to be
> redrawn.
> Due to the rotated canvas the line drawn looks like a clock hand
> rotating counter-clockwise.
> This works - but not always. Sometimes the line is not drawn for one
> or more seconds, although I know from the log statement that onDraw()
> was called. Sometimes means: The line may be not shown after 8
> seconds, then again after 35 seconds and so on.
> If the canvas is not rotated the problem does not occur.
> This also happens when I use a SurfaceView instead of a View.
> It does not only occur in the simulator but also on my G1 - both using
> Android 1.6.
>
> Axel
>
> public class NoMapView extends View {
>     private int angle;
>     private Paint paint;
>
>     public NoMapView(Context context) {
>         super(context);
>     }
>
>     public NoMapView(Context context, AttributeSet attrs, int
> defStyle) {
>         super(context, attrs, defStyle);
>     }
>
>     public NoMapView(Context context, AttributeSet attrs) {
>         super(context, attrs);
>     }
>
>     @Override
>     protected void onDraw(Canvas canvas) {
>         super.onDraw(canvas);
>
>         if(paint == null) {
>             paint = new Paint(Paint.ANTI_ALIAS_FLAG);
>             paint.setAntiAlias(true);
>             paint.setColor(Color.MAGENTA);
>             paint.setStyle(Paint.Style.FILL);
>             paint.setStrokeWidth(1);
>         }
>
>         Point center = new Point(getWidth() / 2, getHeight() / 2);
>         canvas.save();
>
>         canvas.rotate(-angle, center.x, center.y);
>         for(int i=160; i<180; i++) {
>             canvas.drawPoint(i, i, paint);
>         }
>         canvas.restore();
>
> //              log.info("angle=" + angle);
>
>         angle+=5;
>         if(angle == 360) {
>             angle = 0;
>         }
>     }
>
> }
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to