W sprzętowej akceleracji zwyczaj View
dodane ScrollView
lub ListView
zarówno z poniższych fragmentów kodu daje ten sam wynik: (proszę ignorować najlepszych praktyk na sekundę)Dziwne zachowanie `drawTextOnPath()` ze sprzętem accelration
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// centering stuff
float centerX = getWidth()/2f;
float centerY = getHeight()/2f;
float size = 80;
float halfSize = size/2f;
float left = centerX - halfSize;
float top = centerY - halfSize;
RectF oval = new RectF(left, top, left + size, top + size);
Path path = new Path();
path.addArc(oval, 160, 359);
Paint paint = new Paint();
paint.setTextSize(30);
paint.setStyle(Style.STROKE);
canvas.drawTextOnPath("Hello world", path, 0, 0, paint); //<--- line A
canvas.drawCircle(centerX, centerY, 10, paint); //<--- line B
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// centering stuff
float centerX = getWidth()/2f;
float centerY = getHeight()/2f;
float size = 80;
float halfSize = size/2f;
float left = centerX - halfSize;
float top = centerY - halfSize;
RectF oval = new RectF(left, top, left + size, top + size);
Path path = new Path();
path.addArc(oval, 160, 359);
Paint paint = new Paint();
paint.setTextSize(30);
paint.setStyle(Style.STROKE);
canvas.drawCircle(centerX, centerY, 10, paint); //<--- line B
canvas.drawTextOnPath("Hello world", path, 0, 0, paint); //<--- line A
}
sam wynik:
Ale z późniejszym fragmencie kodu, jak tylko przewijać ScrollView
(mam niewidzialny manekin View
poniżej więc mogę przewinąć) i helloworld dotyka ActionBar
, coś bardzo interesujące dzieje i widać coś, co intelligent humankind used to see in old Windows OS.
wiem drawTextOnPath()
nie jest obsługiwana w trybie accelration sprzętowej, ale dlaczego to działa, jeśli nazwać to po raz pierwszy?