我使用不同的路径创建了一个绘图,但是如何移动整个绘图?我如何选择并移动它?这是我的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 :(得分: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