Thanks for the fast reply guys! Is there a page that lists all the limitations of the hardware accelerated rendering engine and the Android versions applicable? That would be very useful.
It's cool to see the Android developers actually read these emails. On Saturday, 22 June 2013 03:29:09 UTC+10, RichardC wrote: > > See this thread: > https://groups.google.com/d/msg/android-developers/2DT6JaPszR0/-Q2g6ZLRM5sJ > > > > On Friday, June 21, 2013 5:32:51 PM UTC+1, Leith Bade wrote: >> >> I have been banging my head for a while trying to figure out why my >> custom view was not drawing properly until I tried turning off hardware >> acceleration. >> >> It is to do with canvas.drawCircle. It is drawn in solid blue at about >> 300px radius. >> >> I also use canvas.drawText and that works fine under hardware >> acceleration. >> >> The only thing I can think of is that I a using an unsymmetrical >> canvas.scale... >> >> Here is my code: >> // Called to redraw the map >> @Override >> protected void onDraw(Canvas canvas) { >> // Check if we are in Eclipse UI editor >> if (isInEditMode()) { >> return; >> } >> // Save the canvas' transforms for unscaled UI elements >> canvas.save(); >> // Place the map offset in centre of screen >> canvas.translate(getWidth() / 2, getHeight() / 2); >> // Zoom the map >> canvas.scale((float) (-1.0 / mMapController.getMapMetresPerPixelX()), >> (float) (-1.0 / mMapController.getMapMetresPerPixelY())); >> // Pan the map >> canvas.translate((float) mMapController.getMapCentreX(), (float) >> mMapController.getMapCentreY()); >> // Draw a circle >> canvas.drawCircle(0.0f, 0.0f, 0.01f, mCirclePaint); >> // Restore the canvas' transforms for unscaled UI elements >> canvas.restore(); >> // Draw the map centre coordinated and scale in top left >> canvas.drawText("Centre Coord: (" + String.format("%.4f", >> mMapController.getMapCentreX()) + ", " + String.format("%.4f", >> mMapController.getMapCentreY()) + ")", 16.0f * mDisplayMetrics.density, >> 36.0f * mDisplayMetrics.scaledDensity, mCoordPaint); >> canvas.drawText("Scale:" + String.format("%.4f", >> mMapController.getMapScale()), 16.0f * mDisplayMetrics.density, 54.0f * >> mDisplayMetrics.scaledDensity, mCoordPaint); >> } >> >> The values of the various variables from the debugger: >> isInEditMode() = false >> getWidth() = 1080 >> getHeight() = 1701 >> getMapMetresPerPixelX() = 5.37037039426811E-5 >> getMapMetresPerPixelY() = -5.364583215838397E-5 >> getMapCentreX() = 0.0 >> getMapCentreY() = 0.0 >> getMapScale() = 1.0 >> mCirclePaint = new Paint(Paint.ANTI_ALIAS_FLAG); >> mCirclePaint.setColor(Color.BLUE); >> mCoordPaint = new Paint(Paint.ANTI_ALIAS_FLAG); >> mCoordPaint.setColor(Color.BLACK); >> mCoordPaint.setTextSize(18.0f * mDisplayMetrics.scaledDensity); >> mDisplayMetrics.density = 3.0 >> mDisplayMettrics.scaledDensity = 3.0 >> >> I hope that helps figure it out. >> >> I am going to try on the emulator with 4.2 too see what happens. >> >> Leith >> > -- -- 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 --- You received this message because you are subscribed to the Google Groups "Android Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.

