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.