2012-02-03 66 views
1

我試圖創建得出如下路徑ShapeDrawable:ShapeDrawable(從PathShape)上正確的座標不拉絲

Path path = new Path(); 
path.moveTo(50, 20); 
path.lineTo(0, 50); 
path.lineTo(50, 100); 

ShapeDrawable shapeDrawable = new ShapeDrawable(new PathShape(path, someNumber ,someNumber)); 

然後我把shapeDrawable作爲一個圖層繪製像這樣的頂層:

Drawable layers[] = new Drawable[2]; 
layers[0] = res.getDrawable(R.drawable.crawford01); 
layers[1] = shapeDrawable; 

LayerDrawable layerDrawable = new LayerDrawable(layers); 
view.setImageDrawable(layerDrawable); 

現在的問題是,路徑不爲(50,20)開始,它的方式,當你改變somenumber其中shapeDrawable構造我不明白跳動。

任何幫助或文檔,你可以建議表示讚賞。

回答

4

定義您的PathShape時,「someNumber」屬性實際上非常重要,而且不是微不足道的。它們是路徑的「標準」寬度和高度,基本上定義了路徑的邊界,並直接與您在PathShape構造函數here中指定的路徑相關聯。

另一個重要的問題是,用於定義Path的座標不是絕對座標,而是與標準寬度和高度組合,以計算縮放時形狀的顯示方式。例如,以下兩個PathShape實質上是相同的。

public Path getPath1 { 
    Path path = new Path(); 
    path.lineTo(0, 1); 
    path.lineTo(1, 0); 
    path.close(); 
    return path; 
} 

public Path getPath2 { 
    Path path = new Path(); 
    path.lineTo(0, 10); 
    path.lineTo(5, 0); 
    path.close(); 
    return path; 
} 

PathShape shape1 = new PathShape(getPath1(), 1, 1); 
PathShape shape2 = new PathShape(getPath2(), 5, 10);