是否可以将不同的路径组合到视图或对象中?

时间:2012-06-24 23:17:48

标签: java android

我使用不同的路径创建了一个绘图,但是如何移动整个绘图?我如何选择并移动它?这是我的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我在寻找错误的东西,或者这不是做这种事情的方法。

如果有人能指出我正确的方向,我真的很感激。

1 个答案:

答案 0 :(得分:0)

将此绘图代码放入自定义onDraw()子类的View方法中。然后,您可以将图形放在屏幕上,但是您可以使用布局,动画和其他转换,就像框架中的任何其他视图一样。类似的东西:

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