我自己想到了......所描述的行爲似乎是known issue。我想這是因爲每條路徑都被看作是一個獨立的「輪廓」,而這個輪廓不能與另一條路徑合併。
但是我能夠通過簡單的「黑客」獲得所需的行爲。但這隻適用於基於行的路徑。下面的代碼(小例子),只是如果任何人的興趣......
public class MyPath extends Path {
private ArrayList<Float> points = new ArrayList<Float>();
public void addPath(MyPath src) {
this.points.addAll(src.getPoints());
super.rewind();
super.moveTo(this.points.get(0), this.points.get(1));
for (int i = 2; i < this.points.size(); i += 2) {
super.lineTo(this.points.get(i), this.points.get(i+1));
}
}
@Override
public void moveTo(float x, float y) {
this.points.add(x);
this.points.add(y);
super.moveTo(x, y);
}
@Override
public void lineTo(float x, float y) {
this.points.add(x);
this.points.add(y);
super.lineTo(x, y);
}
public ArrayList<Float> getPoints() {
return this.points;
}
}
的這種用法很簡單:
MyPath p1 = new MyPath();
MyPath p2 = new MyPath();
p1.moveTo(0,0); p1.lineTo(200,200);
p2.moveTo(200,200); p2.lineTo(400,0);
p1.addPath(p2); //merge
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.BLACK);
paint.setTextSize(40);
canvas.drawColor(Color.WHITE);
canvas.drawTextOnPath("Lorem ipsum dolor sit amet", p1, 0, 0, paint);
我已經想到了這一點,但我不得不重寫我的應用程序的整個邏輯,以便只使用一個路徑。那麼,如果沒有人有解決方案的幾個路徑,我將不得不咬住子彈......;) – Aletheios 2012-08-02 01:10:20
我明白了。也許這可以幫助:http://www.java2s.com/Code/Android/2D-Graphics/Drawtextalongwithpath.htm – 0gravity 2012-08-02 01:15:22