2012-06-24 47 views
0

我使用不同的路徑創建了一個圖形,但是如何移動整個圖形?我如何選擇並移動它?這裏是我的onDraw方法的主要部分:是否有可能將不同的路徑合併到視圖或對象中?

Path theSymbol = new Path(); 

theSymbol.moveTo(0.0F, 0.0F); 
theSymbol.lineTo(0.0F, 50.0F); 
theSymbol.lineTo(16.666666F, 58.333332F); 
theSymbol.lineTo(-16.666666F, 75.0F); 
theSymbol.lineTo(16.666666F, 91.666664F); 
theSymbol.lineTo(-16.666666F, 108.33333F); 
theSymbol.lineTo(16.666666F, 124.99999F); 
theSymbol.lineTo(-16.666666F, 141.66666F); 
theSymbol.lineTo(0.0F, 150.0F); 
theSymbol.lineTo(0.0F, 200.0F); 
theSymbol.offset(100.0F, 20.0F); 

canvas.drawPath(theSymbol, paint); 

這就是我畫一個電阻屏幕(它的工作原理)。現在我想讓某種方式讓所有這些路徑成爲一個對象,我可以選擇並移動。

我一直在尋找一些像Sriracha這樣的項目,但我找不到他們如何做他們的元素圖紙。

我也搜遍無數次,但我得到的只是「在路上移動某物」。 Maibe我正在尋找錯誤的東西,或者這不是做這種事情的方式。

如果有人能指出我正確的方向,我會非常感激。

回答

0

將此繪圖代碼放入自定義View子類的onDraw()方法中。然後,您可以將您的圖畫放置在屏幕上,不過您可以像使用框架中的任何其他視圖一樣使用佈局,動畫和其他轉換。喜歡的東西:

public class ResistorView extends View { 
    private Path mSymbol; 
    private Paint mPaint; 

    //...Override Constructors... 
    public ResistorView(Context context) { 
     super(context); 
     init(); 
    } 

    public ResistorView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
    } 

    private void init() { 
     mSymbol = new Path(); 
     mPaint = new Paint(); 
     //...Your code here to set up the path, 
     //...allocate objects here, never in the drawing code. 
    } 

    //...Override onMeasure()... 
    @Override 
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     //Use this method to tell Android how big your view is 
     setMeasuredDimension(width, height); 
    } 

    //...Override onDraw()... 
    @Override 
    public void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     canvas.drawPath(mSymbol, mPaint); 
    }   

} 

有關創建自定義視圖,check out the SDK docs更多信息。

HTH

+0

OMG我現在要試試這個!非常感謝! – 0gravity

+0

好吧,現在我已經有了這個類,從哪裏可以調用它或什麼時候我想要在屏幕上創建/繪製電阻?我有3個類:DefaultActivity.java MyView.java(它擴展了SurfaceView)和ResistorView.java我如何實現ResistorView類? – 0gravity

相關問題