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 我正在寻找错误的东西,或者这不是做这种事情的方法。

如果有人能指出我正确的方向,我将不胜感激。

4

1 回答 1

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);
    }        

}

有关创建自定义视图的更多信息,请查看 SDK 文档

高温高压

于 2012-06-24T23:31:45.203 回答